什么?=正则表达式中的意思?

the*_*man 44 regex

我可以知道?=正则表达式中的含义吗?例如,它在这个表达式中的意义是什么:

(?=.*\d).
Run Code Online (Sandbox Code Playgroud)

cle*_*tus 66

?=是一个积极的先行,一种零宽度的断言.它的含义是捕获的匹配必须跟在括号内的任何内容,但不捕获该部分.

您的示例意味着匹配需要后跟零个或多个字符,然后是一个数字(但不再捕获该部分).

  • 此答案已添加到 [Stack Overflow 正则表达式常见问题解答](http://stackoverflow.com/a/22944075/2736496) 的“Lookarounds”下。 (2认同)

kis*_*HoR 14

下面的表达式将查找文件名中在其扩展名之前设置的最后一个数字(不包括点 (.))。

'\d+(?=\.\w+$)'
Run Code Online (Sandbox Code Playgroud)

file4.txt将匹配4

file123.txt将匹配123

demo.3.js将匹配3等等。

  • @TheLethalCoder 举个例子更容易理解。礼貌地建议将其添加为评论有什么问题吗? (5认同)

Mic*_*kis 9

(?= pattern)是零宽度的正向超前断言。例如,/\w+(?=\t)/匹配一个单词,后跟一个制表符,而不在中包含该制表符$&