使用正则表达式搜索具有特殊字符的子字符串
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
}
作为正则表达式新手,我有一个非常快速的问题。我想使用正则表达式在给定字符串中进行简单的子字符串搜索。到目前为止我有:
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
}