C# 需要带正则表达式的帮助-匹配任意位置

C# 需要带正则表达式的帮助-匹配任意位置,c#,.net,regex,C#,.net,Regex,我需要一个正则表达式来匹配语句中任意位置的下列单词之一(county或county of)。此外,我想匹配括号中包含的整个短语,即语句中的任何位置。 在下面的例子中,我想在“COUNTY”和(以前是RM Haldimand Norfolk)上进行匹配。这两个标记出现在语句中的什么位置并不重要 例: 1) 诺福克县(原霍尔迪曼德诺福克市RM) 2) 诺福克郡(原名霍尔迪曼德诺福克) 到目前为止,我的表达是: (county of|county)\s*\(.*\) 这将匹配1,但不匹配2。我不知道

我需要一个正则表达式来匹配语句中任意位置的下列单词之一(county或county of)。此外,我想匹配括号中包含的整个短语,即语句中的任何位置。 在下面的例子中,我想在“COUNTY”和(以前是RM Haldimand Norfolk)上进行匹配。这两个标记出现在语句中的什么位置并不重要

例:

1) 诺福克县(原霍尔迪曼德诺福克市RM)

2) 诺福克郡(原名霍尔迪曼德诺福克)

到目前为止,我的表达是:

(county of|county)\s*\(.*\)
这将匹配1,但不匹配2。我不知道如何在正则表达式中表示“(.*)”应该与字符串中除“county”或“county of”之外的任何地方匹配。

您可以这样做:

String input = "NORFOLK COUNTY (formerly RM Haldimand-Norfolk)";

String output = Regex.Replace(input, @"(county of|county)|(\(.*?\))", "", 
    RegexOptions.IgnoreCase);

Console.WriteLine( output );

解释:

(county of|county)     # one of the options
  |                    # OR
(\(.*?\))              # anything between brackects

希望能有所帮助。

这行不通,示例可能会变得更复杂,我只是粘贴了几个简单的示例来简化。我的规则已扩展,以便其他单词可以匹配,如district或district of。如果要匹配整个短语(如果“county”在其中),请尝试
(.*county.*)
。太好了,我如何在匹配中包含方括号(以便文本和方括号匹配)。nvm,我找到了:(?=.*(.*))。谢谢你的帮助,我想这应该行得通。不,我只想匹配county,括号中的整个表达式包括括号。所以匹配的最后一个表达式是:(县的县|区的区|市的市)(?=*(*))。但是,当我在我的Regex.Replace()函数中使用它时,要替换带有空白的匹配项,它只替换第一个匹配项,即“county”,而不替换文本(以前是RM Haldimand Norfolk)。我是否需要对Regex.Replace()执行一些不同的操作?Regex匹配得很好,示例也可以运行,但我使用的表达式w/Regex.Replace()方法如下:Regex.Replace('NORFOLK COUNTY(以前是RM Haldimand NORFOLK)','(COUNTY of | COUNTY)(?=*(*),'',RegexOptions.IgnoreCase)。Replace()方法只替换“country”匹配项,其他方法不替换。我需要它来替换组中的两个匹配项。第二个示例有问题。如果只有“COUNTY NORFOLK”,则表达式将失败。它不会匹配。但要求它必须匹配“县”或任何“(fsdfasdf)”