标签: regex
我在使用正则表达方面经验丰富,但我最近遇到过一些我无法解释的事情。
我试图制作一个与test和2015_test_1_2中的test_1_2匹配的正则表达式。当我单独测试每个字符串时,我想出了/(?!\d)([^_]+)/。但是,当我同时测试两者时,使用/gm修饰符,第一个测试中的2015匹配,如果它不在第一行。
test
2015_test_1_2
test_1_2
/(?!\d)([^_]+)/
/gm
2015
在第一行:
在第二行:
这个例子比我更好地解释了它:https://regex101.com/r/zF0iR5/4
答案 0 :(得分:1)
这是因为[^_]也匹配换行符。
[^_]
将最后一个示例文本移到第一行或将正则表达式更改为:
(?!\d)([^_\n]+)
否则:
(?![\d\n])([^_]+)
RegEx Demo