我注意到我正在做的一些正则表达式工作有一些有趣的行为,我想要一些见解。
根据我的理解,字符字符\ w应符合以下[a-zA-Z_0-9]
鉴于此输入,
0000000060399301 + 0000000042456971 + 0000000
这个正则表达式应该是什么
(\ d +)\ W
拍摄?
我希望它能捕获0000000060399301,但它实际上捕获了000000006039930
我有什么遗失的吗?为什么1从最后掉落?
我注意到我是否将正则表达式更改为
(\ d + \ w)的
它正确捕获,即包括1
有人在乎解释吗?感谢
答案 0 :(得分:3)
您需要正则表达式匹配尾随字符 - 即1
。
它不能是另一个角色,因为
+
不是单词类字符+
不是数字答案 1 :(得分:1)
1被删除,因为\ w不在捕获组中。
答案 2 :(得分:1)
\d+
- 匹配一个或多个数字字符。
\w+
- 匹配一个或多个单词字符。 [A-Za-z\d_]
因此,使用此字符串0000000060399301+
,此\d+
正则表达式中的(\d+)\w
会在最初匹配所有数字(包括+1之前的),因为以下模式为\w
,正则表达式引擎尝试查找匹配项,因此它向左回溯一个字符并强制\w
与+
之前的数字匹配。现在,捕获的组包含000000006039930
,最后1
与\w
匹配