我正在尝试匹配此字符串:
文字18 19文字
有了这个正则表达式:
\s+\d\d\s+
Run Code Online (Sandbox Code Playgroud)
该字符串有两个数字,每个数字都由前导和尾随空格包围.
所以我在想 - 这应该给我18和19对吗?它没有,它只给我18.
我在这里测试这个测试器:http://java-regex-tester.appspot.com/
谢谢!
你不要第二项匹配的原因是,之间的空间18和19被消耗由后\s+的第一场比赛的.您应该为尾随空白创建一个非消耗零宽度的正则表达式,例如使用先行语法或零宽度边界的标记:
\s+\d\d(?=\s+)
Run Code Online (Sandbox Code Playgroud)
请改用:
\b\d\d\b
Run Code Online (Sandbox Code Playgroud)
你的正则表达式与第二个数字不匹配,因为第一个匹配已经"吃掉"了所有空格.
同时,它\b是一个"单词边界",也就是所谓的零宽度(元)字符:它在匹配时不会"吃掉"任何东西.
| 归档时间: |
|
| 查看次数: |
2870 次 |
| 最近记录: |