2010-09-15 17 views
1

我想問這個問題的最好方法就是提供一個例子。C#正則表達式 - 一個角色可以在單個「匹配」調用中多次匹配嗎?

我有一個字符串:

string line = "12345"; 
string pattern = "[0-9]{4}"; 
MatchCollection collection = Regex.Matches(line, pattern); 

這將返回集合中的一場比賽: 「1234」。但是,有沒有辦法讓它返回「1234」和「2345」?所以我希望正則表達式不要跳過已經匹配的字符。

我很新的正則表達式,所以任何幫助將不勝感激。謝謝。

+3

可能重複[正則表達式重疊匹配](http://stackoverflow.com/questions/320448/overlapping-matches-in-regex) – 2010-09-15 21:06:39

+0

是的,錯過了某種方式。謝謝。 – Shaz 2010-09-15 21:38:34

回答

1

「(?=(\ d {4}))」 不僅將同時匹配子,他們會告訴你的;您可以使用Match.Groups [1]爲每個匹配訪問匹配的子字符串的值。

1

更改表達式:

(?=\d{4}) 
+0

這將返回正確的匹配數量,但不會返回其內容。圍繞'\ d {4}'添加另一組括號應該做到這一點;然後您可以在每場比賽中通過組[1]訪問內容。 – KeithS 2010-09-15 22:20:29