我正在尝试构建一个正则表达式(使用 .Net 的 RegEx 对象(将字符序列"C#"与字边界匹配。
因此,在字符串中搜索"我是 C# 开发人员,但我不是 C# 开发人员",我试图匹配第一个"C#"(作为一个单词(,而不是作为单词一部分的第二个"C#"。
-
我尝试了模式"\bC#\b",没有匹配项。
-
我也尝试了模式"\bC#\b"(试图转义#(,没有匹配。
我在某处读到井号 (#( 可以解释为单词边界。 这是真的吗? 如果是这样,我们如何查找该字符串("C#"(作为单词?
井号和空格之间的b
不匹配,因为它们都匹配非单词字符,但在井号和 d 字符之间匹配。
你可以使用负前瞻(?!
断言右边的不是非白空间S
字符,而不是第二个单词边界b
:
bC#(?!S)
正则表达式演示
正如@elgonzo在评论中指出的那样,为了防止在C#
后面出现非单词字符时破坏匹配,您可以使用积极的前瞻来断言右侧的内容是非单词字符W
或断言字符串的末尾$
bC#(?=W|$)
正则表达式演示
以下正则表达式匹配第一个单词/最后一个单词/换行符/空格不区分大小写
/(:?^|s)C#(:?$|s)/i