例如,string是“staaaae”,如果searchValue是“aa”,n = 2,则返回3。
答案 0 :(得分:0)
这不是正则表达式本身的功能,但根据您的语言,您可以获取此信息。
有一件事我必须纠正你。第二场比赛的起始索引是 4 而不是3(标准正则表达式匹配行为)
staaaae
^^ first match
^^ second match
模式在第一场比赛后继续搜索,因此比赛不会重叠。
<强>的Perl 强>
以Perl为例,没问题。
除了匹配的内容外,Perl(自5.6.0起)也提供了 匹配为@ - 和@ +数组内容的位置。 $ - [0]是整场比赛开始的位置,$ + [0]是 结束的位置。同样,$ - [n]是开头的位置 $ n匹配和$ + [n]是结束的位置。如果$ n是 未定义,所以是$ - [n]和$ + [n]。
所以在Perl中,您想要的信息将在$-[n]
。
<强> C#/。净强>
在.net中也没问题。只比Perl多一点努力。
类Match
还会返回匹配的索引,但它一次只匹配一个,因此您必须通过循环才能获得所有匹配。
string input = "staaaae";
string pattern = @"aa";
Match match = Regex.Match(input, pattern);
int count = 0;
while (match.Success)
{
count++;
Console.WriteLine("'{0}' was found the {1} timein the source code at position {2}.",
match.Value, count, match.Index);
match = match.NextMatch();
}
Console.ReadLine();