是否有一个函数返回RegEx匹配开始的索引?

Roy*_*son 31 c# regex

我有15个字符长的字符串.我正在使用正则表达式对其执行一些模式匹配.我想知道IsMatch()函数返回true 的子字符串的位置.

问题:是否有任何函数返回匹配的索引?

Adr*_*der 46

对于多个匹配,您可以使用与此类似的代码:

Regex rx = new Regex("as");
foreach (Match match in rx.Matches("as as as as"))
{
    int i = match.Index;
}
Run Code Online (Sandbox Code Playgroud)


Mar*_*ers 15

使用Match而不是IsMatch:

    Match match = Regex.Match("abcde", "c");
    if (match.Success)
    {
        int index = match.Index;
        Console.WriteLine("Index of match: " + index);
    }
Run Code Online (Sandbox Code Playgroud)

输出:

Index of match: 2
Run Code Online (Sandbox Code Playgroud)


spe*_*der 10

不使用IsMatch,而是使用Matches方法.这将返回MatchCollection,其中包含许多Match对象.这些都有房产指数.


YOU*_*YOU 5

Regex.Match("abcd", "c").Index

2
Run Code Online (Sandbox Code Playgroud)

注意# 应该检查 Match.success 的结果,因为它返回 0,并且可能与位置 0 混淆,请参考 Mark Byers Answer。谢谢。