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
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)
用它们中的单词月份捕获日期