Regex:查找最小匹配.? 没有切

  • 本文关键字:查找 Regex javascript regex
  • 更新时间 :
  • 英文 :


我读了那么多答案,总是用?操作符。我不知道我错过了什么。

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

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

我可以使用什么模式来获得&;1&;;在"斯佳丽小姐"之前?而不需要知道随机部分的内容。我只知道它总是一个数字后面跟着&;;;;(没有引号)在我们要找的名字之前。就我而言,不用担心其他名字会妨碍我。它永远不会是这样的:3:evnt:blahblahMISTER GREEN blahblah MISS SCARLET(中间没有x:evnt)

我最初想到的是:

(d):evnt.*MISS SCARLET

给出"0"因为它匹配回mr . Green的索引,因为.*匹配所有内容。好吧,那又怎样?拯救:

(d):evnt.*?MISS SCARLET

不,相同的结果。

如何获得最接近文本的匹配?我确定我的措辞不正确,但这个例子应该表明我想要什么。我想把它分离出来思嘉小姐和"0";如果我在找格林先生

谢谢。

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

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

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

RegEx演示

但是,如果evnt关键字后可能存在冒号,那么您可以使用此正则表达式并进行反向查找:

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

RegEx Demo 2

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

最新更新