У меня есть это регулярное выражение:
con = r"(((consignee)\s?(name)?\s?(and)?\s?(address)?)|((name)?\s?(and)?\s?(address)?\s?(of)?\s?(consignee)))"
Я пытаюсь сопоставить со следующими текстами:
txt1 = 'NAME AND ADDRESS OF CONSIGNEE :'
txt2 = ' consignee name and address :'
Я использую re.finditer()
вот так:
match1 = [i.group() for i in re.finditer(con, txt1, re.IGNORECASE)]
match2 = [i.group() for i in re.finditer(con, txt2, re.IGNORECASE)]
Результат, который я получаю, таков:
>>> match1
['NAME AND ADDRESS OF CONSIGNEE']
>>> match2
[' consignee']
Мой желаемый результат - ['consignee name and address']
для match2
. Хотя я уже добавил это в регулярное выражение, почему он не захватывает группу?
Я пытался переупорядочить регулярное выражение следующим образом:
con = r"(((name)?\s?(and)?\s?(address)?\s?(of)?\s?(consignee))|((consignee)\s?(name)?\s?(and)?\s?(address)?))"
Но все же в этом случае также match2
всегда только [' consignee']
. Я также проверил здесь regex101 , который также дает тот же результат. Что я делаю не так?