2015-12-23 3 views
-1

Мне нужно регулярное выражение, чтобы соответствовать одному из следующих слов (графство или округ) где угодно в заявлении. Кроме того, я хочу сопоставить всю фразу, содержащуюся в скобках, в любом месте инструкции. В приведенных ниже примерах я хотел бы выбрать «COUNTY» AND »(ранее RM Haldimand-Norfolk). Не имеет значения, где эти 2 токена появляются в заявлении.Нужна помощь w/Regex expression - match where

Ex:

1) NORFOLK COUNTY (ранее RM Haldimand-Норфолк)

2) COUNTY НОРФОЛК (ранее RM Haldimand-Норфолк)

Мое выражение до сих пор:

(county of|county)\s*\(.*\) 

Это будет соответствовать # 1, но не соответствует # 2. Я не знаю, как выразить в своем регулярном выражении, что '(. *)' Должно быть сопоставимо в любом месте строки дополнительно к совпадению слов «county» или «county of».

+0

Это не сработает, примеры могут усложниться, я просто вставил пару простых примеров для упрощения. Мое правило расширено, чтобы другие слова могли совпадать, например, в округе или округе. – ActiveX

+0

Если вы хотите совместить всю фразу, если внутри нее находится «графство», попробуйте '(. * County. *)'. –

ответ

0

Вы можете сделать это так:

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

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

Console.WriteLine(output); 

snippet here.

Разъяснения:

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

Надеется, что это помогает.

+0

Не работает, просто соответствует «графству». – ActiveX

+0

Отлично, как мне включить скобки в матче (так что текст и скобки должны совпадать). – ActiveX

+0

nvm, я понял: (? =. * (\ (. * \))). Thx для вашей помощи Я думаю, что это должно сработать. – ActiveX

Смежные вопросы