正则表达式中的自定义单词边界

时间:2013-01-09 10:18:06

标签: regex

我正在尝试使用正则表达式匹配单词,但遗憾的是,单词边界字符(\ 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);

但是现在,没有任何东西可以匹配......我有什么遗漏吗?

1 个答案:

答案 0 :(得分:6)

(无需转义字符类中的+

问题是你首先使用负向前瞻,而你应该使用负向前瞻。尝试:

@"(?<![\w+])" + expression + @"(?![\w+])"