我正在尝试使用正则表达式匹配单词,但遗憾的是,单词边界字符(\ 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);
但是现在,没有任何东西可以匹配......我有什么遗漏吗?
答案 0 :(得分:6)
(无需转义字符类中的+
)
问题是你首先使用负向前瞻,而你应该使用负向前瞻。尝试:
@"(?<![\w+])" + expression + @"(?![\w+])"