C# 从长字符串正则表达式中获取匹配的子字符串

C# 从长字符串正则表达式中获取匹配的子字符串,c#,regex,C#,Regex,我有一根这样的绳子 jasabcasjlabcdjjakabcdehahakabcdef...//any number of characters @"abc(?=[d-z])+ 我想要返回这些子字符串的正则表达式 [abc],[abcd],[abcde],[abcdef],.... 我写过类似这样的正则表达式 jasabcasjlabcdjjakabcdehahakabcdef...//any number of characters @"abc(?=[d-z])+

我有一根这样的绳子

   jasabcasjlabcdjjakabcdehahakabcdef...//any number of characters
 @"abc(?=[d-z])+
我想要返回这些子字符串的正则表达式

  [abc],[abcd],[abcde],[abcdef],....
我写过类似这样的正则表达式

   jasabcasjlabcdjjakabcdehahakabcdef...//any number of characters
 @"abc(?=[d-z])+
但它没有带来我想要的,我已经尝试了一段时间,请帮助


感谢使用
foreach
循环的方法

string input = "jasabcasjlabcdjjakabcdehahakabcdef";

List<string> result = new List<string>();
string temp = string.Empty;

foreach(char c in input)
{
    if(c == 'a' && temp == string.Empty)
    {
        temp = string.Empty;
        temp += c;                
    }
    else if(c - 1  == temp.LastOrDefault())
    {
        temp += c;                  
    }
    else if (!string.IsNullOrEmpty(temp))
    {
        if (temp.StartsWith("abc"))
        {
            result.Add(temp);
        }
        temp = string.Empty;
    }
}
if (temp.StartsWith("abc"))
{
    result.Add(temp);
}
string input=“jasabcasjlabcdjjakabcdehakabcdef”;
列表结果=新列表();
字符串温度=字符串为空;
foreach(输入中的字符c)
{
if(c='a'&&temp==string.Empty)
{
temp=string.Empty;
温度+=c;
}
else如果(c-1==temp.LastOrDefault())
{
温度+=c;
}
如果(!string.IsNullOrEmpty(temp))为else
{
如果(临时启动带(“abc”))
{
结果。添加(温度);
}
temp=string.Empty;
}
}
如果(临时启动带(“abc”))
{
结果。添加(温度);
}
Linq方法

string input = "jasabcasjlabcdjjakabcdehahakabcdef";
string[] result = Regex.Split(input, @"(?=abc)")
                       .Select(x => string.Concat(x.TakeWhile((y, i) => y == ('a' + i))))
                       .Where(x => !string.IsNullOrEmpty(x))
                       .ToArray();

你是说
abc[d-z]*
?否则请清除规则。@revo no check示例结果“abc,abcd,abcde…”表示它开始搜索abc,然后再搜索abc,然后再搜索abcde…等等正则表达式与某些定义的规则匹配。你有什么规则?@revo rule:从
abc
开始,然后按顺序搜索下一组长度更长的字符,并一直搜索到字符串的末尾所以基本上
abc(d(e(f(…)?)?)?