匹配过滤器表达式文本

时间:2016-03-30 14:15:26

标签: .net regex

我必须动态构建过滤器表达式。这就是我想匹配和替换过滤器的原因。例如,我有以下字符串:

string input = " (Country = \"Brazil\" OR Country = \"Canada\") AND CompanyName.Contains(\"Contoso\") ";

我想替换CompanyName.Contains(\" Contoso \"),其中公司名称可能有不同的名称。

这是我的代码:

string input = " (Country = \"Brazil\" OR Country = \"Canada\") AND CompanyName.Contains(\"Contoso\") ";
string replacement = "123456";
string pattern = @"(CompanyName.Contains\()";

// \"[^\"]*\"

Regex rgx = new Regex(pattern);
string result = rgx.Replace(input, replacement);

Console.WriteLine(result);

似乎我的过滤器表达式错误。应该是什么?

1 个答案:

答案 0 :(得分:1)

在您的表达式中,点不会被转义,只会在开场CompanyName.Contains("Contoso")后立即与所需的(部分匹配。

您可以使用

var pattern = @"\bCompanyName\.Contains\([^()]*\)";

请参阅regex demo

\b匹配单词边界,转义点与文字点匹配,\([^()]*\)(匹配,后跟除(和{{1}以外的0+个字符(由于否定的字符类))。