与字符串"C#"匹配的 .Net 正则表达式



我正在尝试构建一个正则表达式(使用 .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

最新更新