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

Regex 正则表达式匹配月份名称,后跟年份,regex,Regex,例如,可以使用正则表达式来匹配“2009年2月”吗?沿着 \b(?:Jan(?:uary)?|Feb(?:ruary)?|...|Dec(?:ember)?) (?:19[7-9]\d|2\d{3})(?=\D|$) \b(?:1月(?:8月)?2月(?:8月)?12月(?:余烬)?(?:19[7-9]\d | 2\d{3})(?=\d$) 那是 \b # a word boundary (?: # non-capturing g

例如,可以使用正则表达式来匹配“2009年2月”吗?

沿着

\b(?:Jan(?:uary)?|Feb(?:ruary)?|...|Dec(?:ember)?) (?:19[7-9]\d|2\d{3})(?=\D|$) \b(?:1月(?:8月)?2月(?:8月)?12月(?:余烬)?(?: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 \b#单词边界 (?:#非捕获组 一月(uary)?#一月(uary) |二月# |等等 |十二月(余烬)?#十二月(余烬) )#终端组 #空间 (?:#非捕获组 19[7-9]\d|2\d{3}1970-2999 )#终端组 (?=\D |$)#后跟:除数字或字符串结尾外的任何内容
为了匹配一些边缘示例,我不得不对此进行研究,但最终我使用了

(\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})

要捕获包含单词month的日期,请修改Beerswiller的答案,如果您需要“st”/“nd”/“rd”变体,请执行以下操作:


(b\b\d{1,2{1,2}{0.3}{0\d\d\d{0.3{0\d\b\b\b(b\b\d\d\d\d\d{1,2{1,2{1,2{1,2}{0\d\d\d\d\d\d{1\d{1.2{1\d{1.2{1\d{1\d{1\d{1.2{1\d{1\d\d{1\d{1\d{1\d{2}2}2}0 0 0\d\d\d\d\d{1\d\0\d\d\d\d\d\d\d{1\d{1\0\0\0\d\d\d\d{1\d{1\20\d{2})|\d{2})*

这个正则表达式解释了逗号周围的一些空格

有时它并不总是在正确的地方

((\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}(st|nd|rd|th)?)?((\s*[,.\-\/]\s*)\D?)?\s*((19[0-9]\d|20\d{2})|\d{2})*

是否允许匹配“Undecimber 15000”?限制为1月至12月,然后是1990年至2010年。幸运的是,非英语不是一个问题。接下来是1990年到2010年——是否有意设定这个严格的上限?离2011年只有8个月了。OBTW,1990-2010年是
(?:199\d | 20[01]\d)
只是一件小事,对于月份而不是(11月| 12日)来说,它应该是(?:11月| 12日),或者至少我必须更改它才能与Python一起工作,否则它会返回一个空的[''匹配,您可以添加(?I)(regex | u part u to | u | u使| u不区分大小写)或(?I)regex\u part\u to\u make\u case\u sensitive(?-i)取决于您使用的regex处理器。它还将1999年7月34日作为有效日期传递!为我工作,寻找飞蛾的名字。