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

Syl*_*inB 3 regex

我试图使用正则表达式来匹配单词,但遗憾的是,单词边界字符(\ b)不包含足够的字符,因此我想添加更多字符.(在那个精确的情况下,"+"字符)

这是我过去常常拥有的(它是C#,但不是很相关):

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

这个特殊的正则表达式与"C++"不匹配,我认为这真是一个真正的无赖.所以我尝试在字符类中使用\ w字符,以及+字符:

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

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

fge*_*fge 6

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

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

@"(?<![\w+])" + expression + @"(?![\w+])"
Run Code Online (Sandbox Code Playgroud)