5

我正在尝试使用正则表达式匹配单词,但遗憾的是单词边界字符 (\b) 没有包含足够我喜欢的字符,所以我想添加更多。(在那种精确的情况下,“+”字符)

这是我曾经拥有的(它是 C#,但不是很相关):

string expression = Regex.Escape(word);
Regex regExp = new Regex(@"\b" + expression + @"\b", RegexOptions.IgnoreCase);

这个特殊的正则表达式与“C++”不匹配,我认为这真是太糟糕了。因此,我尝试以这种方式在字符类中使用 \w 字符以及 + 字符:

string expression = Regex.Escape(word);
Regex regExp = new Regex(@"(?![\w\+])" + expression + @"(?![\w\+])", RegexOptions.IgnoreCase);

但是现在,什么都没有匹配……我有什么遗漏吗?

4

1 回答 1

8

(无需+在字符类中转义)

问题是您首先使用否定的lookahead,而您应该使用否定的lookbehind。尝试:

@"(?<![\w+])" + expression + @"(?![\w+])"
于 2013-01-09T10:42:57.853 回答