выражение регулярного выражения не соответствует ожидаемому в Python - PullRequest
0 голосов
/ 02 мая 2020

У меня есть следующий текст:

'1. Θεόδωρος Φέσσας του ∆ηµητρίου και της Ελένης, Μηχανολόγος - Ηλεκτρολόγος, που γεννήθηκε στη Θεσσαλονίκη, το έτος 1951, κάτοικος Καλλιθέας Αττικής, οδός Αργυρουπόλεως 2Α, κάτοχος του υπ’ αρ. ∆.Α.Τ. ΑΕ 106909/0504- 2008, Τ/Α Βουλιαγµένης Αττικής, µε ΑΦΜ 015299388, ∆.Ο.Υ. Γλυφάδας, Ελληνικής Ιθαγένειας – Πρόεδρος ∆.Σ.- Εκτελεστικό Μέλος. 2. Ευτυχία Κουτσουρέλη του Σοφοκλέους και της Αικατερίνης, Επιχειρηµατίας, που γεννήθηκε στην Αθήνα, το έτος 1954, κάτοικος Καλλιθέας Αττικής, οδός Αλεξάνδρου Πάντου αρ. 25, κάτοχος του υπ’ αρ. ∆.Α.Τ. ΑΟ 043043/19, Τ.Α. Ν. Σµύρνης, µε ΑΦΜ 106995191, ∆.Ο.Υ. Ν. Σµύρνης, Ελληνικής Ιθαγένειας – Αντιπρόεδρος - Εκτελεστικό Μέλος. 3. Παντελής Τζωρτζάκης του Μιχαήλ και της Φιλίας, Οικονοµολόγος, που γεννήθηκε στην Πόµπια Ηρακλείου Κρήτης, το έτος 1962, κάτοικος Αλίµου, οδός Αγίου Νικολάου, αρ. 20 Β, κάτοχος του υπ΄ αρ. ∆.Α.Τ. AM 032877/23062014, T.A. ΑΛΙΜΟΥ, µε ΑΦΜ 042718060, ∆.Ο.Υ. Παλαιού Φαλήρου, Ελληνικής Ιθαγένειας – Αντιπρόεδρος – Ανεξάρτητο Μη Εκτελεστικό Μέλος.'

Я использую следующее выражение:

import re
p = re.compile('\s+(\d{1,2}\.\s.*Μέλος\.\s+)\d+')

Я ожидал бы совпадение с 2 группами, но оно совпадает с одной в жадной манере

enter image description here

Что мне нужно сделать, чтобы захватить каждую подгруппу и затем получить к ней доступ?

1 Ответ

3 голосов
/ 02 мая 2020

Эта часть в конце шаблона \s+)\d+ также будет соответствовать тому, что шаблон должен соответствовать в начале, предотвращая повторное совпадение \s+(\d{1,2}.

Сделайте шаблон не жадным, чтобы останавливаться на первом вхождение.

\s+(\d{1,2}\.\s.*?Μέλος\.)
  • \s+ совпадение 1+ пробельные символы
  • ( захват группа 1
  • \d{1,2}\.\s совпадение 1-2
  • .*?Μέλος Совпадение с любым символом как можно меньше и совпадение с `Μέλος
  • \. Совпадение .
  • ) Закрыть группу

Regex demo

Если заранее \s+ не требуется, вы можете опустить его и группу захвата.

\d{1,2}\.\s.*?Μέλος\.

Regex demo

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...