Итак, у меня есть несколько документов, из которых я извлекаю дату, мое выражение регулярного выражения:
query = """([0-9]{1,2})?\s{1,2}([jJ]anurary|[fF]eburary|[mM]arch|[aA]pril
|[mM]ay|[jJ]une|[jJ]uly|[aA]ugust|[sS]eptember|[oO]ctober|[jJ]anuary
|[nN]ovember|[dD]ecember|[jJ]an|[fF]eb|[mM]ar|[aA]pr|[aA]ug|[sS]ep|[sS]ept
|[oO]ct|[nN]ov|[dD]ec|[fF]ebruary)\s{1,2}([0-9]{2,4})"""
OR
query = """([0-9]{1,2})?\s{1,2}([jJ]anurary|[fF]eburary|[mM]arch|[aA]pril|
[mM]ay|[jJ]une|[jJ]uly|[aA]ugust|[sS]eptember|[oO]ctober|[jJ]anuary|
[nN]ovember|[dD]ecember|[jJ]an|[fF]eb|[mM]ar|[aA]pr|[aA]ug|[sS]ep|[sS]ept|
[oO]ct|[nN]ov|[dD]ec|[fF]ebruary)\s{1,2}([0-9]{2,4})"""
Единственное различие между ними состоит в том, что один имеет | в начале новой каждой строки, а другой - в конце новой строки. Эти два соответствуют разным вещам - в частности, с | в конце строки я не совпаду с маем, но если в начале строки я не совпаду с январем (при условии, что остальная часть дня & yr & space правильные - я буквально просто перемещаю позицию or вокруг и то, что я просто соответствовал, я больше не соответствую и наоборот). Я делаю что-то не так, есть ли способ обойти это, или есть правильный способ сделать это вместо этого? Очевидно, что цель состоит в том, чтобы соответствовать обоим. Если вы хотите попробовать сами, я могу легко повторить случаи «8 мая 2018 года» и «25 января 2018 года».
Остальная часть моего кода просто re.search (query, doc) (что не соответствует).
Примечание - регулярное выражение Python 3.6.8 == 2018.1.10