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(…)?)?)?
?