正则表达式匹配而不在正则表达式中指定逗号(,)

时间:2015-02-03 07:40:18

标签: regex

我正在利用这个网站来学习regex,我被困在this particular lesson。看起来正则表达式是错误的。 当我写(\w+\s\d+)((\,\d+)?)“text”和“capture”变为绿​​色但“result”出现错误(十字标记)时。

但如果写(\w+ (\d+)),则会给出以下结果。

your task       text        capture         result
capture text    Jan 1987    Jan 1987, 1987    ✓
capture text    May 1969    May 1969, 1969    ✓
capture text    Aug 2011    Aug 2011, 2011    ✓

现在,问题是(\w+ (\d+))没有显示它会捕获逗号,但是答案是正确的。而且,在我已指定的(\w+\s\d+)((\,\d+)?)表达式中,但它出错了,为什么?

1 个答案:

答案 0 :(得分:2)

那是因为捕获列告诉你,你应该捕获什么。例如:1987年1月,1987年意味着你应该捕获两组。 1)1987年1月2日1987年

他们使用逗号作为组之间的分隔符。所以它不是你应该捕获的字符串的一部分,而只是一个分隔符来告诉你下一个例外捕获组的起始位置。

如果您踏入下一课http://regexone.com/lesson/13,我的例子会更加明确。在文本列中没有任何逗号(例如1280x720),但在捕获列中,您被要求提供“1280,720”。所以这支持了我的理论。