2014-01-16 49 views
3
foreach (Match match in Regex.Matches(line, "X")) 
{ 
     indexes.Add(match.Index); 
} 

我有一個快速的問題。這裏是我的代碼的一部分,我得到X的索引,但我也想要索引,即使X的小寫。我應該寫什麼?Regex.Matches匹配大寫和小寫

+2

你應該寫''[Xx]「'。這是涵蓋*任何*正則表達式教程,閱讀其中之一是恕我直言,這是一個合理的步驟,然後再問你是否要使用正則表達式。 – Jon

+0

如果你只想找然後使用正則表達式中的單個字符是一個重量級的解決方案 – Sean

回答

4

使用i模式修飾符(請正則表達式不區分大小寫):

foreach (Match match in Regex.Matches(line, "(?i)X")) 

或使用RegexOptions.IgnoreCase選項:

foreach (Match match in Regex.Matches(line, "X", RegexOptions.IgnoreCase)) 

或同時指定Xx

foreach (Match match in Regex.Matches(line, "[Xx]")) 
3

不使用正則表達式,你可以做Regex.Matches(line.ToLower(), 'x')

+0

雖然一個解決方案,這是非常低效的,因爲正則表達式匹配現在是用'ToLower'一個O(2N)操作。 –

+0

無論如何,正則表達式匹配不是O(n)(誠實的問題,我不知道)?順便說一下,我在這裏沒有考慮性能:) –

+0

根據定義,正則表達式不是一個O(n)操作,而是很大程度上取決於表達式本身。 –