当前位置:

c#-正则表达式查找子串-重叠和非重叠

访客 2024-01-05 550 0

MatchCollection找到的是非重叠子串。举个例子:seq=“acttcttcg”regex=“ctt[ca]”,也就是说,要匹配cttc或者ctta。

那么非重叠的匹配,只能找到第一个cttc(idx=1);重叠的匹配方式,则能找到两个cttc(idx=1和idx=4)。

usingSystem.Text.RegularExpressions;//seq和regex都是字符串//非重叠子串MatchCollectionmatches=Regex.Matches(seq,regex);foreach(Matchiteminmatches){//item是匹配值,item.Index是匹配位置,给用户的是1-basedintstart=item.Index1;intend=startitem.Length-1;ts.Append(string.Format(">matchNo.{0}start={1}end={2}onthedirectstrand\n{3}\n",cnt,start,end,item));cnt=1;}//seq和regex都是字符串//重叠子串Regexregex1=newRegex(regex);Matchmatch1=regex1.Match(seq);while(match1.Success){intstart=match1.Index1;intend=startmatch1.Length-1;ts.Append(string.Format(">matchNo.{0}start={1}end={2}onthedirectstrand\n{3}\n",cnt,start,end,match1));cnt=1;match1=regex1.Match(seq,match1.Index1);}

发表评论

  • 评论列表
还没有人评论,快来抢沙发吧~