2015-09-21 4 views
1

im пытается сделать это в течение 5 часов im отчаянный im gonna get mad. пожалуйста helpme.regex.matches notmatching

var start = new List<string>() {"Report", "Audit" , "Committee" } ; 
string expresss= start[0] + @"(.*?)\n{0,1}(.*?)" + start[1] + @"(.*)$"; 
MatchCollection matches = Regex.Matches(text, "(?im)"+ expresss); 

этот коду не удается найти «» Доклад комитета по аудиту «»

enter image description here

но здесь остроумию регулярного выражения возвышенного text3 в канском найти его.

enter image description here

, пожалуйста, помогите мне найти «» Доклад комитет по аудиту «» через C# регулярное выражение кода. спасибо.

+1

Это не так просто, как дело, не так ли? – Flynn1179

+0

Где вы создаете переменную 'text'? – Sybren

+0

Это может быть из-за linbreak: используйте '\ r? \ N'. Попробуйте 'string expresss = start [0] + @" (. *?) \ R? \ N {0,1} (. *?) "+ Start [1] + @" (. *) $ ";' –

ответ

1

Похоже, что это факт, что он чувствителен к регистру, и вы не соответствуете регулярному выражению на нескольких строках (благодаря @stribizhev для определения этого).

Использование:

MatchCollection matches = Regex.Matches(text, "(?im)"+ expresss, 
    RegexOptions.Multiline | RegexOptions.IgnoreCase); 

Я не могу сказать из контекста, но это также может быть стоит рассмотреть, является ли целесообразным использование RegexOptions.CultureInvariant.

EDIT: Хорошо, я понятия не имел, что C# может использовать (? Im) для случая + многострочное совпадение. В этом случае, не уверен, как это сработало для вас, если (? Im) этого не сделал. Я просто снял параметры с моего теста, оставив (? Im), и он соответствовал.

+0

'(? im) '=' RegexOptions.Multiline | RegexOptions.IgnoreCase' –

+1

'(? Im)' не работает в .NET, Флинн прав, он должен указать их как параметры для совпадений. –

+0

Фактически я новый, он был связан с многострочным. но я не могу понять. –