2015-09-21 32 views
1

即時試圖做這個5小時im絕望我會生氣。 請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); 

這段代碼未能找到 「」 審計COMMITEE的報告 「」

enter image description here

但這裏機智崇高文字3的正則表達式ICAN找到它。

enter image description here

請幫我找 「」 通過C#代碼的正則表達式 「審計COMMITEE的報告」。 謝謝。

+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是否也是合適的。

編輯:好吧,我不知道C#可以使用(?im)進行case +多行匹配。在那種情況下,如果(?im)沒有,那麼不知道這是如何工作的。我只是選擇了我的測試,離開(?im),它確實匹配。

+0

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

+1

'(?im)'在.NET中不起作用,Flynn是正確的,他需要將它們指定爲匹配的參數。 –

+0

其實我是新的它與多行有關。但我無法弄清楚。 –

相關問題