Exercise 12: Matching Nested Groups
Task Text Capture Groups
Capture Jan 1987 Jan 1987 1987 Failed
Capture May 1969 May 1969 1969 Failed
Capture Aug 2011 Aug 2011 2011 Failed
我找到了解决办法((...)\s\d{1,4})|(\d{1,4})
但它不接受正则表达式捕捉到1987年一月,以及1987年
Exercise 12: Matching Nested Groups
Task Text Capture Groups
Capture Jan 1987 Jan 1987 1987 Failed
Capture May 1969 May 1969 1969 Failed
Capture Aug 2011 Aug 2011 2011 Failed
我找到了解决办法((...)\s\d{1,4})|(\d{1,4})
但它不接受正则表达式捕捉到1987年一月,以及1987年
尝试:
([A-Za-z]+\s)?\d{1,4}
将在号码前选择一个可选字
但是,在RegexOne上观看练习后,要捕捉完成任务所需的内容,请使用:
((?:[A-Za-z]+\s)?(\d{1,4}))
你做错了什么。
((...)\s\d{1,4})|(\d{1,4})
你需要收集年度以及每月名称,所以你应该使用如下:
(...\s(\d{1,4}))|(\d{1,4})
添加()
各地\d{1,4}
捕捉到它(你可以删除()
围绕...
,因为月份名称,例如Jan
不需要被捕获)。你正则表达式被捕获或者:
Jan 1999
和Jan
1999
现在将捕获:
Jan 1999
和1999
1999
我认为这个词和数字之间有一个空格。 – Shafizadeh
@Shafizadeh新增,谢谢! ';)' – Druzion
它不接受这种情况是它只接受19XX,但不是1987年1月 –
原始交
\b((\w{3})?\s\d{4})\b
正则表达式匹配RegexOne图案
((\w{3})?[\s\b](\d{4}))
忘记的基团。
匹配Mon YEAR
或YEAR
。
它并不能解决问题亲爱的。感谢您的帮助,但它只接受第一部分 –
++限制月份名称为3个字符。但是,为什么你在你的模式中使用'\ b'? – Shafizadeh
@SachinDivakar编辑正则表达式作品,最初缺少的组,请参阅http://i.imgur.com/bme6kE2.png –
为RegexOne一个工作的解决办法是:
((Jan|May|Aug)\s(1987|1969|2011))
您需要正确阅读文本,任务是既捕捉年还有全日。
作为@Druzion指出,正则表达式仍然可以优化的,就像这样:
((?:Jan|May|Aug)\s(\d{4}))
这捕获整个日期,使用非捕获组当月部分和今年分别捕获。
这三个月份的'Jan','May','Agu'只是一个例子。我想也有其他几个月的名字。 – Shafizadeh
@Druzion:没错,但练习是关于括号。 – Jan
@Shafizadeh:不,这些例子是直接从网站上获取的。 – Jan
请给出一个downvoting的原因 –
这些问题没有任何意义 - 阅读regexone的解释,在[regex101.com](http://regex101.com)尝试你的模式,*搜索Web *获取更多细节网站是regular-expressions.info和rexegg.com,但还有更多)。 –