Σγουρές αγκύλες στις κανονικές εκφράσεις της Python
Οι τελεστές '+', '*', '?'
είναι χρήσιμοι, ωστόσο, δεν μπορούν να καθορίσουν
έναν συγκεκριμένο αριθμό επαναλήψεων. Σε αυτήν την περίπτωση
θα σας βοηθήσει ο τελεστής {}.
Λειτουργεί ως εξής: {5}
- πέντε επαναλήψεις, {2,5} – επαναλαμβάνεται
από δύο έως πέντε (και τα δύο συμπεριλαμβανομένων), {2,}
- επαναλαμβάνεται δύο ή περισσότερες φορές. Δείτε
τα παραδείγματα:
Παράδειγμα
Σε αυτό το παράδειγμα, το μοτίβο αναζήτησης μοιάζει
με αυτό: γράμμα 'x', γράμμα 'a'
μία ή δύο φορές, γράμμα 'x':
txt = 'xx xax xaax xaaax'
res = re.sub('xa{1,2}x', '!', txt)
print(res)
Αποτέλεσμα εκτέλεσης του κώδικα:
'xx ! ! xaaax'
Παράδειγμα
Σε αυτό το παράδειγμα, το μοτίβο αναζήτησης μοιάζει
με αυτό: γράμμα 'x', γράμμα 'a'
δύο φορές ή περισσότερες, γράμμα 'x':
txt = 'xx xax xaax xaaax'
res = re.sub('xa{2,}x', '!', txt)
print(res)
Αποτέλεσμα εκτέλεσης του κώδικα:
'xx xax ! !'
Παράδειγμα
Σε αυτό το παράδειγμα, το μοτίβο αναζήτησης μοιάζει
με αυτό: γράμμα 'x', γράμμα 'a'
τρεις φορές, γράμμα 'x':
txt = 'xx xax xaax xaaax'
res = re.sub('xa{3}x', '!', txt)
print(res)
Αποτέλεσμα εκτέλεσης του κώδικα:
'xx xax xaax !'
Παράδειγμα
Σε αυτό το παράδειγμα, το μοτίβο αναζήτησης μοιάζει
με αυτό: γράμμα 'a' δέκα φορές:
txt = 'aaa aaaaaaaaaa aaa'
res = re.sub('a{10}', '!', txt)
print(res)
Αποτέλεσμα εκτέλεσης του κώδικα:
'aaa ! aaa'
Παράδειγμα
Σε αυτό το παράδειγμα υπάρχει το ακόλουθο μοτίβο: γράμμα
'x', γράμμα 'a' τρεις φορές ή λιγότερες,
γράμμα 'x'. Για να το υλοποιήσετε,
μπορείτε να μην καθορίσετε αριθμό πριν από το 3
, αλλά απλά να βάλετε
ένα κόμμα:
txt = 'xx xax xaax xaaax'
res = re.sub('xa{,3}x', '!', txt)
print(res)
Αποτέλεσμα εκτέλεσης του κώδικα:
'! ! ! !'
Παράδειγμα
Το μηδέν πριν από το 3 είναι επίσης επιτρεπτό:
txt = 'xx xax xaax xaaax'
res = re.sub('xa{0,3}x', '!', txt)
print(res)
Αποτέλεσμα εκτέλεσης του κώδικα:
'! ! ! !'
Πρακτικές ασκήσεις
Δίνεται η συμβολοσειρά:
txt = 'aa aba abba abbba abbbba abbbbba'
Γράψτε μια κανονική έκφραση που θα βρει τις συμβολοσειρές
'abba', 'abbba', 'abbbba'
και μόνο αυτές.
Δίνεται η συμβολοσειρά:
txt = 'aa aba abba abbba abbbba abbbbba'
Γράψτε μια κανονική έκφραση που θα βρει συμβολοσειρές
της μορφής 'aba', στις οποίες το 'b'
εμφανίζεται λιγότερες από 3 φορές (συμπεριλαμβανομένου).
Δίνεται η συμβολοσειρά:
txt = 'aa aba abba abbba abbbba abbbbba'
Γράψτε μια κανονική έκφραση που θα βρει συμβολοσειρές
της μορφής 'aba', στις οποίες το 'b'
εμφανίζεται περισσότερες από 4 φορές (συμπεριλαμβανομένου).