我正在尝试匹配这个字符串:
Text 18 19 Text
使用这个正则表达式:
\s+\d\d\s+
这个字符串有两个数字,每个数字都被前导和尾随的空格包围。
所以我想 - 这应该给我18和19对吧?但事实并非如此,它只给了我18。
我正在使用这个测试器进行测试:http://java-regex-tester.appspot.com/
谢谢!
我正在尝试匹配这个字符串:
Text 18 19 Text
使用这个正则表达式:
\s+\d\d\s+
这个字符串有两个数字,每个数字都被前导和尾随的空格包围。
所以我想 - 这应该给我18和19对吧?但事实并非如此,它只给了我18。
我正在使用这个测试器进行测试:http://java-regex-tester.appspot.com/
谢谢!
18
和19
之间的空格被第一个匹配项的末尾\s+
“消耗”了。您应该使用非消耗性零宽度正则表达式来匹配尾随的空格,例如使用前瞻语法或零宽度边界标记。\s+\d\d(?=\s+)
\b\d\d\b
\s+\d\d(?=\s)
。 - Andrew Cheong\b\d\d\b
会在开头和结尾都匹配,我想这是个好事情。另一方面,\s+\d\d(?=\s)
无法捕获开头或结尾的两个数字,这可能不是预期的结果。 - Andrew Cheong因为首次解析输出为"18",剩余的字符串是"19 Text",这不符合匹配条件。