我试图使用正则表达式来匹配单词,但遗憾的是,单词边界字符(\ 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)
但现在,没有任何东西可以匹配......我有什么遗漏的吗?
(无需+在字符类中转义)
问题是你首先使用负向前瞻,而你应该使用负向前瞻.尝试:
@"(?<![\w+])" + expression + @"(?![\w+])"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1531 次 |
| 最近记录: |