Η εντολή 'ή' στις κανονικές εκφράσεις της Python
Η εντολή '|', η οποία αντιπροσωπεύει
μια πιο ισχυρή εκδοχή 'ή'
σε σύγκριση με την εντολή [ ]. Αυτή η εντολή
επιτρέπει τη διαίρεση της κανονικής έκφρασης σε πολλά
μέρη. Σε αυτήν την περίπτωση, το αναζητούμενο μπορεί
να ταιριάξει είτε με το ένα μέρος της κανονικής έκφρασης, είτε με
το άλλο. Ας δούμε μερικά παραδείγματα.
Παράδειγμα
Σε αυτό το παράδειγμα, το μοτίβο αναζήτησης είναι:
τρία γράμματα 'a' ή τρία γράμματα
'b':
txt = 'aaa bbb abb'
res = re.sub('a{3}|b{3}', '!', txt)
print(res)
Αποτέλεσμα εκτέλεσης του κώδικα:
'! ! abb'
Παράδειγμα
Σε αυτό το παράδειγμα, το μοτίβο αναζήτησης είναι:
τρία γράμματα 'a' ή από 1 και
περισσότερα γράμματα 'b':
txt = 'aaa bbb bbbb bbbbb axx'
res = re.sub('a{3}|b+', '!', txt)
print(res)
Αποτέλεσμα εκτέλεσης του κώδικα:
'! ! ! ! axx'
Παράδειγμα
Σε αυτό το παράδειγμα, το μοτίβο αναζήτησης είναι: ένα ή περισσότερα γράμματα ή τρία ψηφία:
txt = 'a ab abc 1 12 123'
res = re.sub('[a-z]+|\d{3}', '!', txt)
print(res)
Αποτέλεσμα εκτέλεσης του κώδικα:
'! ! ! 1 12 !'
Παράδειγμα
Η κάθετη γραμμή μπορεί να διαιρέσει την κανονική έκφραση όχι σε δύο μέρη, αλλά σε οποιονδήποτε αριθμό μερών:
txt = 'aaa bbb ccc ddd'
res = re.sub('a+|b+|c+', '!', txt)
print(res)
Αποτέλεσμα εκτέλεσης του κώδικα:
'! ! ! ddd'
Παράδειγμα
Εάν η κάθετη γραμμή βρίσκεται μέσα σε στρογγελά
παρένθεση, τότε το 'ή' λειτουργεί μόνο
μέσα σε αυτές τις παρενθέσεις.
Για παράδειγμα, ας βρούμε συμβολοσειρές που ταιριάζουν με
το ακόλουθο μοτίβο: στην αρχή υπάρχει είτε
'a', είτε 'b' μία ή περισσότερες
φορές, και στη συνέχεια δύο γράμματα 'x':
txt = 'axx bxx bbxx exx'
res = re.sub('(a|b+)xx', '!', txt)
print(res)
Αποτέλεσμα εκτέλεσης του κώδικα:
'! ! ! exx'
Πρακτικές Ασκήσεις
Δίνεται η συμβολοσειρά:
txt = 'aeeea aeea aea axa axxa axxxa'
Γράψτε μια κανονική έκφραση που θα βρει συμβολοσειρές
που ταιριάζουν με το μοτίβο: στα άκρα υπάρχουν γράμματα
'a', και ανάμεσά τους - είτε το γράμμα
'e' οποιονδήποτε αριθμό φορών είτε το γράμμα
'x' οποιονδήποτε αριθμό φορών.
Δίνεται η συμβολοσειρά:
txt = 'aeeea aeea aea axa axxa axxxa'
Γράψτε μια κανονική έκφραση που θα βρει συμβολοσειρές
που ταιριάζουν με το μοτίβο: στα άκρα υπάρχουν γράμματα
'a', και ανάμεσά τους - είτε το γράμμα
'e' δύο φορές είτε το γράμμα 'x'
οποιονδήποτε αριθμό φορών.