正则表达式组不匹配

时间:2018-01-18 01:49:47

标签: regex regex-group

我有正则表达式

(\d|(IV|I{0,3})|\bone\b|\btwo\b|\bthree\b|\bfour\b)[\w\s]+

如果我使用句子

  • '1已经伤口' - 1在预期的第1组中匹配
  • 'IV已经伤口' - IV在预期中与第1组匹配

但是,句子

  • '一个人已经伤了' - 第一组中的一个词没有匹配

当我修改正则表达式时如下

(\bone\b|\btwo\b|\bthree\b|\bfour\b|\d|(IV|I{0,3}))[\w\s]+

小组按预期匹配。

所以,我的问题为什么改变小组的顺序工作..

我尝试查找正则表达式的排序和优先级,但找不到任何相关的内容..

THX

1 个答案:

答案 0 :(得分:3)

我认为你在你的正则表达式中犯了一个错误,它应该是

(\d|(IV|I{1,3})|\bone\b|\btwo\b|\bthree\b|\bfour\b)[\w\s

注意它是I{1,3},而不是I{0,3}

因此,正因为如此,你的正则表达式匹配零我,因此空捕获组1