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

时间:2016-05-11 19:01:58

标签: c# regex text

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

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还不太了解。任何人都可以指出我正确的方向吗?

提前致谢!

2 个答案:

答案 0 :(得分:0)

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");
}

问题是你逃避太多了。注意上面的括号,我在每个前面加上斜线。如果你只是在(1)上做一个Regex.Escape(...),它可能会很好。

答案 1 :(得分:0)

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

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