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

本文关键字:单词 边界 自定义 正则表达式 | 更新日期: 2023-09-27 17:51:08

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

但是现在,没有什么是匹配的…我是不是漏掉了什么?

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

(不需要转义字符类中的+)

问题是您首先使用了负向后看,而您应该使用负向后看。试一试:

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