Σγουρές αγκύλες στις κανονικές εκφράσεις της Python

Οι τελεστές '+', '*', '?' είναι χρήσιμοι, ωστόσο, δεν μπορούν να καθορίσουν έναν συγκεκριμένο αριθμό επαναλήψεων. Σε αυτήν την περίπτωση θα σας βοηθήσει ο τελεστής {}.

Λειτουργεί ως εξής: {5} - πέντε επαναλήψεις, {2,5} – επαναλαμβάνεται από δύο έως πέντε (και τα δύο συμπεριλαμβανομένων), {2,} - επαναλαμβάνεται δύο ή περισσότερες φορές. Δείτε τα παραδείγματα:

Παράδειγμα

Σε αυτό το παράδειγμα, το μοτίβο αναζήτησης μοιάζει με αυτό: γράμμα 'x', γράμμα 'a' μία ή δύο φορές, γράμμα 'x':

pythontxt = 'xx xax xaax xaaax'
res = re.sub('xa{1,2}x', '!', txt)

print(res)

Αποτέλεσμα εκτέλεσης του κώδικα:

python'xx ! ! xaaax'

Παράδειγμα

Σε αυτό το παράδειγμα, το μοτίβο αναζήτησης μοιάζει με αυτό: γράμμα 'x', γράμμα 'a' δύο φορές ή περισσότερες, γράμμα 'x':

pythontxt = 'xx xax xaax xaaax'
res = re.sub('xa{2,}x', '!', txt)

print(res)

Αποτέλεσμα εκτέλεσης του κώδικα:

python'xx xax ! !'

Παράδειγμα

Σε αυτό το παράδειγμα, το μοτίβο αναζήτησης μοιάζει με αυτό: γράμμα 'x', γράμμα 'a' τρεις φορές, γράμμα 'x':

pythontxt = 'xx xax xaax xaaax'
res = re.sub('xa{3}x', '!', txt)

print(res)

Αποτέλεσμα εκτέλεσης του κώδικα:

python'xx xax xaax !'

Παράδειγμα

Σε αυτό το παράδειγμα, το μοτίβο αναζήτησης μοιάζει με αυτό: γράμμα 'a' δέκα φορές:

pythontxt = 'aaa aaaaaaaaaa aaa'
res = re.sub('a{10}', '!', txt)

print(res)

Αποτέλεσμα εκτέλεσης του κώδικα:

python'aaa ! aaa'

Παράδειγμα

Σε αυτό το παράδειγμα υπάρχει το ακόλουθο μοτίβο: γράμμα 'x', γράμμα 'a' τρεις φορές ή λιγότερες, γράμμα 'x'. Για να το υλοποιήσετε, μπορείτε να μην καθορίσετε αριθμό πριν από το 3 , αλλά απλά να βάλετε ένα κόμμα:

pythontxt = 'xx xax xaax xaaax'
res = re.sub('xa{,3}x', '!', txt)

print(res)

Αποτέλεσμα εκτέλεσης του κώδικα:

python'! ! ! !'

Παράδειγμα

Το μηδέν πριν από το 3 είναι επίσης επιτρεπτό:

pythontxt = 'xx xax xaax xaaax'
res = re.sub('xa{0,3}x', '!', txt)

print(res)

Αποτέλεσμα εκτέλεσης του κώδικα:

python'! ! ! !'

Πρακτικές ασκήσεις

Задание 1

Δίνεται η συμβολοσειρά:

pythontxt = 'aa aba abba abbba abbbba abbbbba'

Γράψτε μια κανονική έκφραση που θα βρει τις συμβολοσειρές 'abba', 'abbba', 'abbbba' και μόνο αυτές.

Задание 2

Δίνεται η συμβολοσειρά:

pythontxt = 'aa aba abba abbba abbbba abbbbba'

Γράψτε μια κανονική έκφραση που θα βρει συμβολοσειρές της μορφής 'aba', στις οποίες το 'b' εμφανίζεται λιγότερες από 3 φορές (συμπεριλαμβανομένου).

Задание 3

Δίνεται η συμβολοσειρά:

pythontxt = 'aa aba abba abbba abbbba abbbbba'

Γράψτε μια κανονική έκφραση που θα βρει συμβολοσειρές της μορφής 'aba', στις οποίες το 'b' εμφανίζεται περισσότερες από 4 φορές (συμπεριλαμβανομένου).