Регулярное выражение соответствует имени месяца с последующим годом
Можно ли использовать регулярное выражение для соответствия "февраль 2009", например?
Ответы
Ответ 1
Вдоль линий
\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
Ответ 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}\D?)?\D?((19[7-9]\d|20\d{2})|\d{2})
чтобы фиксировать даты со словами месяца в них