Εισαγωγή στις κανονικές εκφράσεις στην Python
Οι κανονικές εκφράσεις είναι εντολές για σύνθετη αναζήτηση και αντικατάσταση (ή απλά αναζήτηση). Επιτρέπουν να κάνετε πολύ ενδιαφέροντα πράγματα, αλλά, δυστυχώς, είναι αρκετά δύσκολες στην εκμάθηση.
Για να ξεκινήσετε να εργάζεστε με κανονικές εκφράσεις
στην Python, πρέπει να εισάγουμε ένα ειδικό
module re:
import re
Το module re περιλαμβάνει μεθόδους,
που προορίζονται για εργασία με κανονικές
εκφράσεις. Μια κανονική έκφραση
αντιπροσωπεύει ένα σύνολο εντολών και αποτελείται
από δύο τύπους χαρακτήρων: από αυτούς που
συμβολίζουν τον εαυτό τους και από χαρακτήρες-εντολές,
που ονομάζονται ειδικοί χαρακτήρες.
Η γνωριμία με τις κανονικές εκφράσεις είναι καλύτερα
να ξεκινήσει με το παράδειγμα της μεθόδου sub, η οποία
χρησιμοποιείται για αντικαταστάσεις σε μια συμβολοσειρά. Στην πρώτη
παράμετρο η μέθοδος δέχεται τι να αλλάξει,
στη δεύτερη - σε τι να αλλάξει. Στην τρίτη παράμετρο
ορίζουμε τη συμβολοσειρά, στην οποία πρέπει να γίνει
αντικατάσταση. Στην τέταρτη προαιρετική παράμετρο
ορίζουμε τον αριθμό των αντικαταστάσεων. Η πιο απλή
αντικατάσταση με τη βοήθεια αυτής της μεθόδου
θα μοιάζει έτσι:
res = re.sub('a', '!', 'bab')
print(res) # θα εκτυπώσει 'b!b'
Όπως παρατηρήσατε, στην κανονική έκφραση
τα γράμματα συμβολίζουν τον εαυτό τους. Το ίδιο
ισχύει και για τα ψηφία. Ας αντικαταστήσουμε το ψηφίο
2 με !:
res = re.sub('2', '!', '12abc3')
print(res) # θα εκτυπώσει '1!abc3'
Η τελεία όμως είναι ειδικός χαρακτήρας
και συμβολίζει οποιονδήποτε χαρακτήρα. Στο επόμενο
παράδειγμα ας βρούμε μια υποσυμβολοσειρά με βάση αυτό το
μοτίβο: γράμμα 'x', μετά οποιοσδήποτε
χαρακτήρας, μετά πάλι γράμμα 'x':
res = re.sub('x.x', '!', 'xax eee')
print(res) # θα εκτυπώσει '! eee'
Δίνεται μια συμβολοσειρά:
txt = 'ahb acb aeb aeeb adcb axeb'
Γράψτε μια κανονική έκφραση, που θα βρει τις συμβολοσειρές
'ahb', 'acb', 'aeb'
με βάση το μοτίβο: γράμμα 'a', οποιοσδήποτε
χαρακτήρας, γράμμα 'b'.
Δίνεται μια συμβολοσειρά:
txt = 'aba aca aea abba adca abea'
Γράψτε μια κανονική έκφραση, που θα βρει τις συμβολοσειρές
'abba', 'adca', 'abea'
με βάση το μοτίβο: γράμμα 'a', 2
οποιοιδήποτε χαρακτήρες, γράμμα 'a'.
Δίνεται μια συμβολοσειρά:
txt = 'aba aca aea abba adca abea'
Γράψτε μια κανονική έκφραση, που θα βρει τις συμβολοσειρές
'abba' και 'abea', χωρίς να συμπεριλάβει
'adca'.