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

Regex 正则表达式中的自定义单词边界,regex,Regex,我试图使用正则表达式匹配单词,但遗憾的是单词边界字符(\b)没有包含足够的字符,因此我想添加更多字符。(在这种情况下,使用“+”字符) 这是我曾经拥有的(它是C#但不是很相关): 这个特殊的正则表达式与“C++”不匹配,我认为它真的很糟糕。因此,我尝试以这种方式在character类中使用\w字符以及+字符: string expression = Regex.Escape(word); Regex regExp = new Regex(@"(?![\w\+])" + expression +

我试图使用正则表达式匹配单词,但遗憾的是单词边界字符(\b)没有包含足够的字符,因此我想添加更多字符。(在这种情况下,使用“+”字符)

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

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

string expression = Regex.Escape(word);
Regex regExp = new Regex(@"(?![\w\+])" + expression + @"(?![\w\+])", RegexOptions.IgnoreCase);
但是现在,没有什么能匹配。。。我缺少什么吗?

(无需在字符类中转义
+

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

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

@”(?是的,对不起,刚刚编辑它以包含表达式的声明。我的坏。word是一个字符串。如果word是“C++”,则表达式在转义后变成:“C\\++”,它不应该是
“C\\\++”
而不是
“{C\\\\++}"如果我错了,请原谅我对C是新的。是的,对不起,再次编辑它:D,我只是查错了元素,而调试谢谢你,我做到了。我感觉第一句话应该比第二句不同,但是很难在搜索引擎中提出这样的问题。我浏览了一段时间,但从来没有偶然发现过。t关于“?”字符…遗憾的是,您的“\Q”字符没有被正则表达式识别…至少在我的语言中是这样。
(?=…)
和朋友们都在lookarounds部分。我原以为.net支持\Q和\E,但显然不是太糟糕:/
@"(?<![\w+])" + expression + @"(?![\w+])"