想要匹配单词i.v.不区分大小写
有模式
(?i)\bi\.v\.
Run Code Online (Sandbox Code Playgroud)
但是最后想要一个单词边界
上面的模式失败,因为它匹配
ivx
但如果我尝试添加工作边界到最后
(?i)\bi\.v\.\b
Run Code Online (Sandbox Code Playgroud)
它失败了因为它甚至不匹配iv,因为我认为\b正在吃文字.作为.是一个单词突破
需要\.贪婪
我想要匹配
sam iv sam
不想匹配
sam.iv
ivsam
这越来越近了
(?i)\bi\.v\.\s$
Run Code Online (Sandbox Code Playgroud)
但它没有在一行结束时找到iv
Tim*_*ker 18
\b仅匹配字母数字字符和非字母数字字符(或字符串的开头/结尾).因此,.除非字母数字字符紧跟在该点之后,否则它在a之后不匹配.
如果您的目的是确保点后面没有非空格字符,那么您可以使用负前瞻断言指定:
(?i)\bi\.v\.(?!\S)
Run Code Online (Sandbox Code Playgroud)
(?!\S) 表示"断言下一个字符不是非空白字符".
这可能听起来有点复杂 - 为什么双重否定?为什么不(?=\s)表示"断言下一个字符是空白字符"?嗯,有一个微妙的区别:第二个版本需要一个空白字符; 这意味着正则表达式将无法匹配字符串的末尾.第一个正则表达式也处理了角落情况.
如果您通常希望"单词边界"的概念意味着"空格分隔",那么您还需要替换第一个\b:
(?i)(?<!\S)i\.v\.(?!\S)
Run Code Online (Sandbox Code Playgroud)
或正则表达式将匹配sam.i.v.你似乎不想要它.
| 归档时间: |
|
| 查看次数: |
4544 次 |
| 最近记录: |