我希望:\b([a-zA-Z]+\.?)\b or \b([a-zA-Z]+\.{0,1})\b至少一个字母,最多一个点.
但匹配器发现"ab"的输入为"ab""ab".和"ab .."我希望它能做到以下几点:
"ab" is found for input "ab"
"ab." is found for input "ab."
nothing is found for input "ab.."
Run Code Online (Sandbox Code Playgroud)
如果我替换正则表达式使用0而不是点,例如\b([a-zA-Z]+0?)\b它按预期工作:
"ab" is found for input "ab"
"ab0" is found for input "ab0"
nothing is found for input "ab00"
Run Code Online (Sandbox Code Playgroud)
那么,我如何让我的正则表达式工作?
问题是\b单词字符和非单词字符之间的匹配,而不是你正在尝试的空格和非空格之间的匹配.a .和a 之间的区别0是0被视为"单词"字符,但.不是.
那么你的例子中发生的是这样的:
让我们拿最后一个字符串ab..,看看哪里\b可以匹配:
a b . .
^ x ^ x x
Run Code Online (Sandbox Code Playgroud)
请记住,\b角色之间的匹配.我所示,其中\b可能有一个匹配^,并且它不能与x.因为\b只能在前面a或后面b匹配,ab所以只要你\b在那里有那些位,我们就只限于匹配.
我想你想要的东西\bab\.?(?!\S).上面写着"字的边界,然后a再b那么也许一个点,其中后没有一个非空格字符."
如果我误解了你的问题,你想要做的表达,找到ab.字符串中ab.c还是发现ab在abc你可以做\bab\.?(?!\.)
| 归档时间: |
|
| 查看次数: |
1297 次 |
| 最近记录: |