Τελεστές Επανάληψης Χαρακτήρων σε Κανονικές Εκφράσεις
Υπάρχουν καταστάσεις όπου χρειάζεται να καθοριστεί ότι
ένας χαρακτήρας επαναλαμβάνεται έναν συγκεκριμένο αριθμό
φορών. Εάν ο ακριβής αριθμός επαναλήψεων είναι άγνωστος,
τότε μπορείτε απλά να τον γράψετε πολλές φορές
- 'aaaa'. Αλλά τι πρέπει να κάνετε, εάν χρειαστεί
να πείτε κάτι τέτοιο: επαναλάβετε μία ή περισσότερες
φορές;
Για αυτό υπάρχουν τελεστές (ποσοτικοποιητές)
επανάληψης: το σύμβολο συν + (μία ή περισσότερες
φορές), ο αστερίσκος * (μηδέν ή περισσότερες
φορές) και το ερωτηματικό ? (μηδέν ή μία φορά).
Αυτοί οι τελεστές δρουν πάνω στον χαρακτήρα
που βρίσκεται ακριβώς πριν από αυτούς.
Ας δούμε τη λειτουργία αυτών των τελεστών με παραδείγματα.
Παράδειγμα
Ας βρούμε όλες τις υποσυμβολοσειρές σύμφωνα με το πρότυπο γράμμα
'x', γράμμα 'a' μία ή περισσότερες
φορές, γράμμα 'x':
txt = 'xx xax xaax xaaax xbx'
res = re.sub('xa+x', '!', txt)
print(res)
Αποτέλεσμα εκτέλεσης του κώδικα:
'xx ! ! ! xbx'
Παράδειγμα
Ας βρούμε όλες τις υποσυμβολοσειρές σύμφωνα με το πρότυπο γράμμα
'x', γράμμα 'a' μηδέν ή περισσότερες
φορές, γράμμα 'x':
txt = 'xx xax xaax xaaax xbx'
res = re.sub('xa*x', '!', txt)
print(res)
Αποτέλεσμα εκτέλεσης του κώδικα:
'! ! ! ! xbx'
Παράδειγμα
Ας βρούμε όλες τις υποσυμβολοσειρές σύμφωνα με το πρότυπο γράμμα
'x', γράμμα 'a' μηδέν ή μία
φορά, γράμμα 'x':
txt = 'xx xax xaax xbx'
res = re.sub('xa?x', '!', txt)
print(res)
Αποτέλεσμα εκτέλεσης του κώδικα:
'! ! xaax xbx'
Πρακτικές Ασκήσεις
Δίνεται η συμβολοσειρά:
txt = 'aa aba abba abbba abca abea'
Γράψτε μια κανονική έκφραση που θα βρει τις συμβολοσειρές
'aba', 'abba', 'abbba'
σύμφωνα με το πρότυπο: γράμμα 'a', γράμμα
'b' οποιονδήποτε αριθμό φορών, γράμμα
'a'.
Δίνεται η συμβολοσειρά:
txt = 'aa aba abba abbba abca abea'
Γράψτε μια κανονική έκφραση που θα βρει τις συμβολοσειρές
'aa', 'aba', 'abba',
'abbba' σύμφωνα με το πρότυπο: γράμμα
'a', γράμμα 'b' οποιονδήποτε αριθμό φορών
(συμπεριλαμβανομένου και μηδέν φορών), γράμμα
'a'.
Δίνεται η συμβολοσειρά:
txt = 'aa aba abba abbba abca abea'
Γράψτε μια κανονική έκφραση που θα βρει τις συμβολοσειρές
'aa', 'aba' σύμφωνα με το πρότυπο:
γράμμα 'a', γράμμα 'b' μία
φορά ή καμία, γράμμα 'a'.
Δίνεται η συμβολοσειρά:
txt = 'aa aba abba abbba abca abea'
Γράψτε μια κανονική έκφραση που θα βρει τις συμβολοσειρές
'aa', 'aba', 'abba',
'abbba', χωρίς να συμπεριλάβει τις 'abca'
και 'abea'.