Reputation: 5071
I have the following text:
'1. Θεόδωρος Φέσσας του ∆ηµητρίου και της Ελένης, Μηχανολόγος - Ηλεκτρολόγος, που γεννήθηκε στη Θεσσαλονίκη, το έτος 1951, κάτοικος Καλλιθέας Αττικής, οδός Αργυρουπόλεως 2Α, κάτοχος του υπ’ αρ. ∆.Α.Τ. ΑΕ 106909/0504- 2008, Τ/Α Βουλιαγµένης Αττικής, µε ΑΦΜ 015299388, ∆.Ο.Υ. Γλυφάδας, Ελληνικής Ιθαγένειας – Πρόεδρος ∆.Σ.- Εκτελεστικό Μέλος. 2. Ευτυχία Κουτσουρέλη του Σοφοκλέους και της Αικατερίνης, Επιχειρηµατίας, που γεννήθηκε στην Αθήνα, το έτος 1954, κάτοικος Καλλιθέας Αττικής, οδός Αλεξάνδρου Πάντου αρ. 25, κάτοχος του υπ’ αρ. ∆.Α.Τ. ΑΟ 043043/19, Τ.Α. Ν. Σµύρνης, µε ΑΦΜ 106995191, ∆.Ο.Υ. Ν. Σµύρνης, Ελληνικής Ιθαγένειας – Αντιπρόεδρος - Εκτελεστικό Μέλος. 3. Παντελής Τζωρτζάκης του Μιχαήλ και της Φιλίας, Οικονοµολόγος, που γεννήθηκε στην Πόµπια Ηρακλείου Κρήτης, το έτος 1962, κάτοικος Αλίµου, οδός Αγίου Νικολάου, αρ. 20 Β, κάτοχος του υπ΄ αρ. ∆.Α.Τ. AM 032877/23062014, T.A. ΑΛΙΜΟΥ, µε ΑΦΜ 042718060, ∆.Ο.Υ. Παλαιού Φαλήρου, Ελληνικής Ιθαγένειας – Αντιπρόεδρος – Ανεξάρτητο Μη Εκτελεστικό Μέλος.'
I am using the following expression:
import re
p = re.compile('\s+(\d{1,2}\.\s.*Μέλος\.\s+)\d+')
I would expect to match 2 groups but it matches one in a greedy fashion
What should I do to capture each subgroup and then access it?
Upvotes: 0
Views: 35
Reputation: 163217
This part at the end of the pattern \s+)\d+
will also match what the pattern should match at the start, preventing \s+(\d{1,2}
to match again.
Make the pattern non greedy to stop at the first occurrence.
\s+(\d{1,2}\.\s.*?Μέλος\.)
\s+
Match 1+ whitespace chars(
Capture group 1\d{1,2}\.\s
Match 1-2.*?Μέλος
Match any char as least as possible and match `Μέλος\.
Match a .
)
Close groupIf the \s+
beforehand is not necessary, you could omit it and the capturing group as well.
\d{1,2}\.\s.*?Μέλος\.
Upvotes: 3