我正在利用这个网站来学习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+)?)
表达式中,但它出错了,为什么?
答案 0 :(得分:2)
那是因为捕获列告诉你,你应该捕获什么。例如:1987年1月,1987年意味着你应该捕获两组。 1)1987年1月2日1987年
他们使用逗号作为组之间的分隔符。所以它不是你应该捕获的字符串的一部分,而只是一个分隔符来告诉你下一个例外捕获组的起始位置。
如果您踏入下一课http://regexone.com/lesson/13,我的例子会更加明确。在文本列中没有任何逗号(例如1280x720),但在捕获列中,您被要求提供“1280,720”。所以这支持了我的理论。