如何使用内置的.NET机制或类似的东西自动转义所有正则表达式字符?
我正在使用正则表达式类来查找正则表达式的匹配项。请参见下面的示例。
string pattern = "abc";
Regex regexp = new Regex(@"a\w", RegexOptions.None);
if (regexp.IsMatch(pattern))
{
MessageBox.Show("Found");
}
所以,这里发现将击中。
现在,在某些情况下,我仍然希望使用Regex类,但将正则表达式视为普通字符串。因此,例如,我将模式字符串更改为@“a\w”,并需要Regex类找到匹配。
string pattern = @"a\w";
Regex regexp = new Regex(@"a\w", RegexOptions.None);
if (regexp.IsMatch(pattern))
{
MessageBox.Show("Found");
}
在上面的例子中,“Found”也应该命中。所以,问题是如何将正则表达式转换或处理为纯字符串或类似的东西,可以在正则表达式类中使用?如何实现上述代码片段的场景?
注意:-我不想使用string.Contains、string.indexOf等进行纯文本字符串匹配。
3条答案
按热度按时间1l5u6lss1#
你可以通过Regex.Escape“反正则化”你的字符串,这会把你要搜索的模式转换成正确转义的正则表达式版本。
yfjy0ee72#
在第二种情况下,你不想搜索
\w
在正则表达式中的含义,你想搜索字面量\w
,所以你想:(Note逃逸)。
0lvr5msh3#
您只需要转义特殊字符,例如:
@"a\\w"