检索所有可能的字符串匹配与字符串中的n个字符

问题描述:

基本上我想检索所有可能的字符串匹配与字符串中的n个字符,这是我的初始代码,但它只返回2个匹配。检索所有可能的字符串匹配与字符串中的n个字符

String input = "abc12345abcd"; 
Regex regex = new Regex(@"[A-Za-z]{3}"); //this will only return 2 matches 
MatchCollection matches = regex.Matches(input); 

我应该如何得到下面的使用正则表达式匹配?

abc 
abc 
bcd 

这是可能的,如果不将LINQ帮助呢?

String input = "abc12345abcd"; 
Regex regex = new Regex(@"[A-Za-z]{3}"); 
int i=0; 
while(i<input.Length){ 
    Match m=regex.Match(input,i); 
    if(m.Success){ 
     Console.WriteLine(m.Value); 
     i=m.Index+1; //just increment one char, instead of length of match string 
    }else break; 
} 

结果

abc 
abc 
bcd 
+0

This Works,thanks !!!!!!!!! – jerjer 2009-12-16 04:34:44

+0

不客气! – YOU 2009-12-16 04:35:52

+0

一个跟随的问题:如果我将有一个正则表达式[A-Za-z] {3,}如何得到像abc一样的结果abcd bcd – jerjer 2009-12-16 05:30:10

我认为,虽然没有明确记载,Matches回报非重叠比赛 - 所以abc的第二场比赛意味着什么返回bcd的,因为它会重叠。要获得重叠匹配,您可以编写一个调用Match(单数)方法的循环,以一次获取一个匹配对象;只要匹配对象的Success属性为true,则您继续循环使用Match方法的第二个参数比先前匹配对象的Index属性多一个(以获得下一个匹配,无论重叠与否)。

+0

谢谢,这个工程每S.Mark代码片段 – jerjer 2009-12-16 04:36:27