我读了这么多答案,总是用?操作人员我不确定我错过了什么.

给定一个示例字符串,例如:

the beginning stuff:0:evnt:some random stuff:MISTER GREEN:more stuff:1:evnt:again random stuff:MISS SCARLET:the rest of the stuff

在"SCARLET小姐"之前,我可以使用什么模式获得"1"?不依赖于知道任何随机material 部分中的内容.我知道,在我们要查找的名称之前,它将始终是一个后跟":evnt"(无引号)的数字.就我而言,不必担心其他名字会碍事(也就是说,如果中间没有另一个x:evnt,就永远不会像:3:evnt:blahblahMISTER GREEN等等SCARLET小姐)

我最初想到:

(\d):evnt.*MISS SCARLET

它给出了"0",因为它与格林先生的索引相匹配,因为.*匹配所有内容.好吧,那么?救援:

(\d):evnt.*?MISS SCARLET

不,同样的结果.

如何获得与所讨论的文本最接近的匹配?我肯定我的措辞不正确,但这个例子应该说明我想要什么.如果我在找格林先生,我想把"1"和"0"分开

谢谢

推荐答案

您可以将此正则表达式与否定字符类一起使用:

(\d+):evnt:[^:]*:MISS SCARLET

其中[^:]*匹配0个或更多非:的字符.

RegEx Demo

但是,如果evnt关键字后可能存在冒号,则可以使用此正则表达式进行负前瞻:

(\d+):evnt:(?:(?!:evnt:).)*?:MISTER GREEN

RegEx Demo 2

这里(?:(?!:evnt:).)*?将确保匹配0个或更多的字符,只要:evnt:没有出现在文本中的任何地方.

Javascript相关问答推荐

如何通过使用vanilla JS限制字体大小增加或减少两次来改变字体大小

JS,当你点击卡片下方的绿色空间,而它是在它的背后转动时,

如何解决useState错误—setSelect Image不是函数''

如何控制Reaction路由加载器中的错误状态?

Angular 中的类型错误上不存在获取属性

IF语句的计算结果与实际情况相反

为什么123[';toString';].long返回1?

使每个<;li>;元素的 colored颜色 与随机生成的 colored颜色 列表不同(不重复

JWT Cookie安全性

使用API调用的VUE 3键盘输入同步问题

为什么我的Navbar.css没有显示在本地主机页面上?

如何在Highlihte.js代码区旁边添加行号?

ReactJS在类组件中更新上下文

我如何才能让p5.js在不使用实例模式的情况下工作?

REACT-本机错误:错误类型错误:无法读取未定义的容器的属性

更改彼此独立的两个输入字段的类型

在类中为其他方法中的addEventlistener调用方法中的元素HTML

JavaScriptpromise 和同步行为

如何制作弹出式滑出动画

我的本地计算机上的时区偏移量加倍,但在UTC服务器上工作正常.为什么?