C# 从字符串中检索具有n个字符的所有可能的子字符串匹配项

C# 从字符串中检索具有n个字符的所有可能的子字符串匹配项,c#,regex,vb.net,C#,Regex,Vb.net,基本上,我想从一个字符串中检索所有可能的子字符串匹配项,其中包含n个字符,这是我的初始代码,但它只返回2个匹配项 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 这可能吗,如果

基本上,我想从一个字符串中检索所有可能的子字符串匹配项,其中包含n个字符,这是我的初始代码,但它只返回2个匹配项

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会有帮助吗?

我相信,虽然没有明确的文档记录,
匹配
返回非重叠的匹配——因此
abc
的第二个匹配意味着
bcd
没有返回任何内容,因为它会重叠

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;
}

要获得重叠匹配,可以编写一个循环,调用(单数)方法一次获得一个匹配对象;只要match对象的
Success
属性为true,您就可以继续循环
match
方法的第二个参数比前一个match对象的属性多一个(以获得下一个匹配,无论是否重叠)。

我相信,尽管没有明确的文档记录,
Matches
返回非重叠的匹配项——因此
abc
的第二个匹配项意味着没有为
bcd
返回任何内容,因为它是重叠的


要获得重叠匹配,可以编写一个循环,调用(单数)方法一次获得一个匹配对象;只要match对象的
Success
属性为true,就可以继续循环
match
方法的第二个参数比前一个match对象的属性多一个(以获得下一个匹配是否重叠)。

下面的问题:如果我有一个regex[a-Za-z]{3,}如何获得与abc abcd bcd相同的结果,
[A-Za-z]{3,}
将为您提供
abc abcd bcd
,其平均3个字符及以上将匹配如果我有此字符串“passingx”,我想获得所有可能的单词(子字符串)例如,passin passi pass pass assing assin assin assin ass assin assin assin assin assin assin assin ssing ssing ssing sing sing sing sing ing ing ngx sing sing sing sing sing sing ing ngx sing ngx sing ngx sing ngx这可以在单个正则表达式上完成吗?感谢[A-Za-z]{3,}不会返回结果,因为它在下一次匹配后开始,如果每次迭代都将i增加1,那么当循环遇到非alpha字符时,我将复制结果。下面的问题是:如果我有一个正则表达式[A-Za-z]{3,}怎么能得到像abc abcd bcdYes一样的结果,
[A-Za-z]{3,}
将为您提供
abc abcd bcd
,其平均值为3个字符及以上将匹配如果我有此字符串“passingx”,我希望获得所有可能的单词(子字符串),即passing pass pass passing passing assing assing assin assin asssing ssing ssing ssing sing sing sing sing sing sing sing ingx ngx ngx可以分别在单个正则表达式上完成吗?感谢[A-Za-z]{3,}不会返回结果,因为它在下一次匹配之后开始,如果每次迭代都将i增加1,那么当循环遇到非alpha字符时,我将复制结果。
abc
abc
bcd