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,但還有更多)。 –