正则表达式匹配月份名称后跟年份

Jer*_*emy 28 regex

例如,是否可以使用正则表达式来匹配"2009年2月"?

Tom*_*lak 44

沿着这条路线

\b(?:Jan(?:uary)?|Feb(?:ruary)?|...|Dec(?:ember)?) (?:19[7-9]\d|2\d{3})(?=\D|$)

那是

\b                  # a word boundary
(?:                 # non-capturing group
  Jan(?:uary)?      # Jan(uary)
  |Feb(?:ruary)?    #
  |...              # and so on
  |Dec(?:ember)?    # Dec(ember)
)                   # end group
                    # a space
(?:                 # non-capturing group
  19[7-9]\d|2\d{3}  # 1970-2999
)                   # end group
(?=\D|$)            # followed by: anything but a digit or the end of string

  • @Kenny:当然哎呀.`(?:199\d | 200\d | 2010)` (2认同)

Bee*_*ler 22

我不得不在这方面努力匹配一些边缘的例子,但我最终使用了

(\b\d{1,2}\D{0,3})?\b(?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|Jun(?:e)?|Jul(?:y)?|Aug(?:ust)?|Sep(?:tember)?|Oct(?:ober)?|(Nov|Dec)(?:ember)?)\D?(\d{1,2}\D?)?\D?((19[7-9]\d|20\d{2})|\d{2})
Run Code Online (Sandbox Code Playgroud)

用它们中的单词月份捕获日期

  • 只是一个小问题,几个月而不是(11月| 12月)它应该是(?:Nov | Dec),或者至少我必须改变它才能使它与Python一起工作,否则它会返回一个空的[' '] 比赛 (2认同)