使用正则表达式搜索具有特殊字符的子字符串

Searching for substring with special character using regex

作为正则表达式新手,我有一个非常快速的问题。我想使用正则表达式在给定字符串中进行简单的子字符串搜索。到目前为止我有:

string text = "One (1) cat";
Regex regexsearch = new Regex("\b(" + Regex.Escape(text) + ")\b")
string fulltext = "One (1) cat sat on the wall";
if(regexsearch.IsMatch(fulltext)
{
     \Do thing
}

然而,我每次都跳过我的函数,即使应该有一个匹配。

我觉得我对 Regex.Escape 有一些不太了解的地方。谁能指出我正确的方向?

提前致谢!

Regex.Escape(...) 并不像你想象的那样。 如果您转储 Regex.Escape(text) 的内容,那么您将得到以下内容(不带引号):

"One\ \(1\)\ cat"

我确定这不是您想要的。

var text = "One (1) cat";
text = text.Replace("(", Regex.Escape("(")).Replace(")", Regex.Escape(")"));
var regexsearch = new Regex(text);
var  fulltext = "One (1) cat sat on the wall";
if (regexsearch.IsMatch(fulltext)) {
    Console.WriteLine("okay");
}

问题是你逃避的太多了。请注意上面的括号,我在每个括号前加了斜线。如果您要执行 Regex.Escape(...) 而不是仅在 (1) 上执行,则可能没问题。

您的代码中缺少一个“)”字符。

if(regexsearch.IsMatch(fulltext))
{
     \ Do thing
}