正则表达式 - 是否可以找到重叠的组?

时间:2012-07-04 09:31:08

标签: c# regex

我是regex的新手,只是想知道是否可以在比赛中找到“重叠”组。

假设以下字符串:

  

20122 0029431 7094 0111 5890

我现在想要的所有比赛是:4号+空格+ 4号+空格+ 4号

我尝试的是:[0-9]{4}[\s][0-9]{4}[\s][0-9]{4}

但这只是给了我:9431 7094 0111

我想要的是这些比赛:

  • 9431 7094 0111
  • 7094 0111 5890

这可以用正则表达式吗?

1 个答案:

答案 0 :(得分:3)

是的,如果您将lookahead assertionscapturing groups结合使用:

Regex regexObj = new Regex(@"(?=(\d{4}\s\d{4}\s\d{4}))");
Match matchResult = regexObj.Match(subjectString);
while (matchResult.Success) {
    resultList.Add(matchResult.Groups[1].Value);
    matchResult = matchResult.NextMatch();
}