使用\ g修饰符时正则表达式混淆行为

时间:2015-04-07 14:04:16

标签: regex

我在使用正则表达方面经验丰富,但我最近遇到过一些我无法解释的事情。

我试图制作一个与test2015_test_1_2中的test_1_2匹配的正则表达式。当我单独测试每个字符串时,我想出了/(?!\d)([^_]+)/。但是,当我同时测试两者时,使用/gm修饰符,第一个测试中的2015匹配,如果它不在第一行。

在第一行:

在第二行:

这个例子比我更好地解释了它:https://regex101.com/r/zF0iR5/4

1 个答案:

答案 0 :(得分:1)

这是因为[^_]也匹配换行符。

将最后一个示例文本移到第一行或将正则表达式更改为:

(?!\d)([^_\n]+)

否则:

(?![\d\n])([^_]+)

RegEx Demo