正则表达式 - 查找多个匹配项

时间:2018-01-16 16:29:51

标签: c# regex

我跟随1010159552597,我想找到以10开头的数字,然后是1或0,以7位数结尾。我使用以下RegEx来搜索

(10[01][0-9]{7})

结果如下:1010159552

但我也期望以下内容:1015955259

如何才能获得两个结果?

由于

2 个答案:

答案 0 :(得分:1)

正则表达式使用字符,不会回溯先前的匹配。解决这个问题的方法是使用零长度断言(参见下面的代码)来捕获你想要的东西。

代码

See regex in use here

(?=(10[01]\d{7}))

结果在捕获组1中:

  • 1010159552
  • 1015955259

说明

  • (?=(10[01]\d{7}))确定后续匹配的正向前瞻
    • (10[01]\d{7})将原始表达式捕获到捕获组1

答案 1 :(得分:0)

你是正确的,因为你的期望与你的正则表达式匹配,但是,它会尝试找到该匹配的第一个实例。

在你的情况下,第一个词是:

10 - 1 - 0159552

所以这是给出的解决方案。

由于结果重叠,您可能需要查看此文章。

Overlapping matches in Regex