.net 使用单词边界的正则表达式,但单词以。(期间)
要匹配word.net 使用单词边界的正则表达式,但单词以。(期间),.net,regex,.net,Regex,要匹配wordi.v.不区分大小写 有图案 (?i)\bi\.v\. 但是希望在结尾有一个单词边界 上述模式因匹配而失败 i、 v.x 但是如果我尝试在末尾添加一个工作边界 (?i)\bi\.v\.\b 它失败了,因为它甚至与静脉注射不匹配。 因为我认为\b正在吞噬文字。作为。是一个断字 需要\.贪婪吗 我想匹配 山姆i.v.山姆 不想匹配 sam.i.v. i、 v.sam 这件事越来越近了 (?i)\bi\.v\.\s$ 但它无法在关于当前正则表达式的行末尾找到i.v.: 您不需要在点
i.v.
不区分大小写
有图案
(?i)\bi\.v\.
但是希望在结尾有一个单词边界上述模式因匹配而失败
i、 v.x 但是如果我尝试在末尾添加一个工作边界
(?i)\bi\.v\.\b
它失败了,因为它甚至与静脉注射不匹配。
因为我认为\b
正在吞噬文字。作为。是一个断字需要
\.
贪婪吗
我想匹配山姆i.v.山姆 不想匹配
sam.i.v.
i、 v.sam 这件事越来越近了
(?i)\bi\.v\.\s$
但它无法在关于当前正则表达式的行末尾找到i.v.: 您不需要在点后面加
\b
,因为点不被视为单词字符,但当然需要转义点:
(?i)\bi\.v\.
但是您确实需要在i
之前执行\b
,以确保它不匹配,例如hi
编辑:(根据您的进一步编辑)
试试这个正则表达式:
(?i)\bi\.v\.(?=\s|$)
你似乎对单词边界和贪婪的概念非常困惑。您最好访问以下地址:
- 什么是贪婪量词:
- 什么是单词边界:
当你阅读这些解释时,我相信你会认为你的问题是荒谬的
\b
仅匹配字母数字字符和非字母数字字符(或字符串的开头/结尾)。因此,它在
之后不匹配,除非该点后面紧跟着字母数字字符
如果您的目的是确保点后没有非空白字符,则可以使用以下命令指定:
(?!\S)
表示“断言下一个字符不是非空白字符”
这听起来可能有点复杂-为什么是双负?为什么不(?=\s)
这意味着“断言下一个字符是空白字符”?嗯,有一个微妙的区别:第二个版本需要一个空白字符;这意味着正则表达式将无法匹配字符串的末尾。第一个正则表达式也处理这种情况
如果您通常希望“单词边界”的概念表示“空格分隔”,则还需要替换第一个\b
:
(?i)(?<!\S)i\.v\.(?!\S)
(?i)(?
或者正则表达式将匹配您似乎不希望匹配的sam.i.v.
。您有什么问题?为什么要在表达式末尾添加\b
?当允许匹配时,该i.v.
字符串后面可以跟什么?@Qtax,因为我只需要一个单词匹配。第一个模式将匹配i.v.x。是否要匹配“i.v.x”,但与“xxi.v.x”不匹配?那么“i.v.x”(在.和x之间有一个空格)呢“@JimMischel是的,我想匹配空格。这就是我所说的单词。我应该说得更清楚。你为什么不想找到sam.I.v.
?因为I.v.
前面没有空格?那么单词边界是错误的工具。你最近对你的问题进行的编辑让我有点困惑。”(我写完答案后才看)-我已经对你的问题发表了评论,你能看一下吗?我认为你也需要替换第一个单词边界…我同意。\b匹配?I.v.我不知道它是如何工作的,但我很高兴上帝创造了像你这样的人。谢谢蒂姆。sam I.v.sam失败。sam这是我的问题中的一个示例,我想匹配是的,它会匹配的(很抱歉,我在您之前的评论中没有看到空间sam
;眼睛疲劳!这里已经很晚了)无论如何,请查看我提供的演示,我相信它适用于您的所有案例。
(?i)(?<!\S)i\.v\.(?!\S)