Οι κανόνες των regular expressions (RegEx) μας επιτρέπουν να εκφράσουμε πολύπλοκα πρότυπα αναζήτησης και ταιριάσματος σε κείμενο. Αυτές οι λειτουργίες μπορούν να εφαρμοστούν μέσω συναρτήσεων που παρέχονται από βιβλιοθήκες, όπως η re
στην Python.
Οι συναρτήσεις στα RegEx μας δίνουν τη δυνατότητα να εκτελέσουμε πολλαπλές επιλογές αναζήτησης, ταιριάζοντας πρότυπα με συγκεκριμένη μορφή και συνδυάζοντάς τα με ειδικούς χαρακτήρες. Αυτό μας επιτρέπει να αναζητήσουμε, να αντικαταστήσουμε ή να εξαγάγουμε δεδομένα από κείμενο με μεγάλη ακρίβεια και ευελιξία.
Για τη χρήση των RegEx, χρησιμοποιούμε τις αντίστοιχες συναρτήσεις που παρέχονται από τη βιβλιοθήκη re
, όπως η findall()
για την εύρεση όλων των ταιριασμάτων με ένα πρότυπο σε ένα κείμενο. Τα αποτελέσματα επιστρέφονται σε μορφή λίστας, επιτρέποντάς μας να επεξεργαστούμε τα αποτελέσματα περαιτέρω.
Έτσι, μπορούμε να χρησιμοποιήσουμε αυτές τις συναρτήσεις για να εκτελέσουμε πολύπλοκες λειτουργίες αναζήτησης και ταιριάσματος σε κείμενο, προσφέροντάς μας ευελιξία και ισχυρές δυνατότητες επεξεργασίας δεδομένων.
Η συνάρτηση findall() εκτελεί μια αναζήτηση σε ένα κείμενο με βάση ένα πρότυπο που ορίζεται με τη χρήση εκφράσεων κανονικών εκφράσεων. Αναζητά και επιστρέφει όλες τις αντιστοιχίες που βρίσκει, και τις αποθηκεύει σε μια λίστα.
Παράδειγμα:
import re # Ορισμός του κειμένου που θα αναζητηθούν οι αριθμοί μέσω της συνθήκης κείμενο = "Το κατάστημα έχει 12 μήλα, 24 πορτοκάλια και 35 μπανάνες" # Ορισμός της συνθήκης χρησιμοποιώντας τον κανόνα "\d+", που αντιστοιχεί σε μία ή περισσότερες ψηφία συνθήκη = r"\d+" # Χρήση της συνάρτησης re.findall() για να βρεθούν όλοι οι αριθμοί στο κείμενο αποτέλεσμα = re.findall(συνθήκη, κείμενο) # Εκτύπωση των αποτελεσμάτων print("Τα αποτελέσματα είναι:", αποτέλεσμα)
Ο παραπάνω κώδικας χρησιμοποιεί τη βιβλιοθήκη re
για να εκτελέσει αναζήτηση αριθμών σε ένα κείμενο.
- Πρώτο βήμα: Ορισμός του κειμένου που θα αναζητηθούν οι αριθμοί. Στην περίπτωση μας, το κείμενο είναι
"Το κατάστημα έχει 12 μήλα, 24 πορτοκάλια και 35 μπανάνες"
. - Δεύτερο βήμα: Ορισμός της συνθήκης αναζήτησης χρησιμοποιώντας τον κανόνα
"\d+"
. Αυτή η συνθήκη αντιστοιχεί σε μία ή περισσότερες διαδοχικές ψηφία. - Χρήση της συνάρτησης
re.findall()
για να βρεθούν όλοι οι αριθμοί στο κείμενο βάσει της συνθήκης που ορίστηκε. Το αποτέλεσμα είναι μια λίστα με τους αριθμούς που βρέθηκαν. - Εκτύπωση των αποτελεσμάτων με τη χρήση της εντολής
print()
. Τα αποτελέσματα είναι οι αριθμοί που βρέθηκαν στο κείμενο, δηλαδή[12, 24, 35]
.
Παράδειγμα – Επιστρέψτε μια κενή λίστα εάν δεν βρεθεί καμία αντιστοιχία:
import re # Αναζήτηση αριθμητικών στοιχείων στο κείμενο χρησιμοποιώντας το module re κείμενο = "Το κατάστημα έχει μήλα, πορτοκάλια και μπανάνες" συνθήκη = r"\d+" # Χρήση της συνάρτησης findall() για να επιστραφούν όλα τα αριθμητικά στοιχεία στο κείμενο αποτέλεσμα = re.findall(συνθήκη, κείμενο) print("Τα αποτελέσματα είναι:", αποτέλεσμα)
Ο παραπάνω κώδικας χρησιμοποιεί το module re
για να αναζητήσει αριθμητικά στοιχεία σε ένα κείμενο.
- Η μεταβλητή
κείμενο
περιέχει το κείμενο που θέλουμε να εξετάσουμε. - Η μεταβλητή
συνθήκη
περιέχει το πρότυπο αναζήτησης με βάση το οποίο θα εντοπίζονται τα αριθμητικά στοιχεία. Στη συγκεκριμένη περίπτωση, η συνθήκη είναι το πρότυπο\d+
που αντιστοιχεί σε μια ή περισσότερες συνεχόμενες ψηφία. - Η συνάρτηση
re.findall()
χρησιμοποιείται για να επιστρέψει όλα τα αριθμητικά στοιχεία που αντιστοιχούν στη συνθήκη στο κείμενο. - Τα αποτελέσματα εκτυπώνονται στην οθόνη με τη χρήση της εντολής
print()
.
Το αποτέλεσμα που θα εμφανιστεί στην οθόνη είναι:
Τα αποτελέσματα είναι: []
Αυτό συμβαίνει επειδή το κείμενο που δίνεται δεν περιέχει αριθμητικά στοιχεία που να αντιστοιχούν στη συνθήκη \d+
. Συνεπώς, η λίστα αποτελέσματος είναι άδεια.
Η συνάρτηση search()
εκτελεί αναζήτηση μέσα στο κείμενο για μια αντιστοιχία και επιστρέφει ένα αντικείμενο Match
εάν βρεθεί αντιστοιχία.
[adinserter block=”2″]
Εάν υπάρχει περισσότερες από μία αντιστοιχίες, μόνο η πρώτη εμφάνιση της αντιστοιχίας θα επιστραφεί:
import re # Αναζήτηση αριθμού στο κείμενο χρησιμοποιώντας την βιβλιοθήκη re κείμενο = "Η Άννα καταναλώνει 2500 θερμίδες κάθε μέρα, ενώ ο Γιώργος καταναλώνει 3000 θερμίδες" συνθήκη = r"\d+" # Συνθήκη που αντιστοιχεί σε αριθμό αποτέλεσμα = re.search(συνθήκη, κείμενο) # Αναζήτηση της πρώτης αντιστοιχίας if αποτέλεσμα: print("Η πρώτη αντιστοιχία είναι:", αποτέλεσμα.group()) # Εκτύπωση της πρώτης αντιστοιχίας else: print("Δεν βρέθηκε αντιστοιχία") # Μήνυμα αν δεν βρεθεί αντιστοιχία
Ο παραπάνω κώδικας χρησιμοποιεί τη βιβλιοθήκη re
για να αναζητήσει έναν αριθμό σε ένα κείμενο. Συγκεκριμένα, ο κώδικας εκχωρεί το κείμενο στη μεταβλητή κείμενο
και ορίζει τη συνθήκη συνθήκη
που αντιστοιχεί σε έναν αριθμό.
Στη συνέχεια, η συνάρτηση re.search()
εκτελεί μια αναζήτηση στο κείμενο βάσει της συνθήκης. Αν βρεθεί μια αντιστοιχία, το αποτέλεσμα επιστρέφεται στη μεταβλητή αποτέλεσμα
. Αν δεν βρεθεί αντιστοιχία, η μεταβλητή αποτέλεσμα
παίρνει την τιμή None
.
Τέλος, με χρήση της μεθόδου .group()
καλείται η πρώτη αντιστοιχία που βρέθηκε και εκτυπώνεται. Αν δεν βρεθεί αντιστοιχία, εκτυπώνεται το μήνυμα “Δεν βρέθηκε αντιστοιχία”.
Αν εκτελέσετε τον παραπάνω κώδικα, το αποτέλεσμα θα είναι:
Η πρώτη αντιστοιχία είναι: 2500
Καθώς η συνθήκη \d+
αντιστοιχεί σε μια ακολουθία αριθμών, η αναζήτηση βρίσκει τον πρώτο αριθμό που εμφανίζεται στο κείμενο, που είναι το “2500”. Συνεπώς, εκτυπώνεται το μήνυμα “Η πρώτη αντιστοιχία είναι: 2500”.
Εάν δεν βρεθούν αντιστοιχίες, επιστρέφεται η τιμή None
Παράδειγμα – Κάντε μια αναζήτηση που δεν επιστρέφει αντιστοιχία:
import re # Ορισμός κειμένου και προτύπου αναζήτησης κείμενο = "Η Άννα καταναλώνει 2500 θερμίδες κάθε μέρα, ενώ ο Γιώργος καταναλώνει 3000 θερμίδες" συνθήκη = r"Δεν υπάρχει αντιστοιχία" # Αναζήτηση αντιστοιχίας στο κείμενο αποτέλεσμα = re.search(συνθήκη, κείμενο) # Έλεγχος αποτελέσματος αναζήτησης και εκτύπωση αντίστοιχου μηνύματος if αποτέλεσμα: print("Η πρώτη αντιστοιχία είναι:", αποτέλεσμα.group()) else: print("Δεν βρέθηκε αντιστοιχία")
Ο παραπάνω κώδικας χρησιμοποιεί τη βιβλιοθήκη re
της Python για να αναζητήσει μια αντιστοιχία σε ένα κείμενο. Επισημαίνονται τα εξής:
- Ορίζεται το κείμενο που θα αναζητηθεί στη μεταβλητή
κείμενο
. - Ορίζεται ένα πρότυπο αναζήτησης με τη χρήση μιας συνθήκης στη μεταβλητή
συνθήκη
. Στο παράδειγμα, η συνθήκη αντιπροσωπεύει τη φράση “Δεν υπάρχει αντιστοιχία”. - Η μέθοδος
re.search()
καλείται για να αναζητήσει την πρώτη αντιστοιχία του προτύπου στο κείμενο. - Ελέγχεται το αποτέλεσμα της αναζήτησης με την
if
συνθήκη. Αν βρεθεί αντιστοιχία, εκτυπώνεται το μήνυμα “Η πρώτη αντιστοιχία είναι:” ακολουθούμενο από την αντιστοιχία που βρέθηκε. Αν δεν βρεθεί αντιστοιχία, εκτυπώνεται το μήνυμα “Δεν βρέθηκε αντιστοιχία”.
Αν το κείμενο είναι ακριβώς όπως παρουσιάζεται στο παράδειγμα, το αποτέλεσμα της εκτέλεσης θα είναι:
Δεν βρέθηκε αντιστοιχία
Αυτό συμβαίνει γιατί η συνθήκη που ορίζεται (Δεν υπάρχει αντιστοιχία
) δεν υπάρχει στο κείμενο.
Αν αλλάξετε τη συνθήκη σε κάτι που υπάρχει στο κείμενο, θα εμφανιστεί η αντίστοιχη αντιστοιχία. Για παράδειγμα, αν αλλάξετε τη συνθήκη σε "Άννα"
:
κείμενο = "Η Άννα καταναλώνει 2500 θερμίδες κάθε μέρα, ενώ ο Γιώργος καταναλώνει 3000 θερμίδες" συνθήκη = r"Άννα" αποτέλεσμα = re.search(συνθήκη, κείμενο) if αποτέλεσμα: print("Η πρώτη αντιστοιχία είναι:", αποτέλεσμα.group()) else: print("Δεν βρέθηκε αντιστοιχία")
Το αποτέλεσμα θα είναι:
Η πρώτη αντιστοιχία είναι: Άννα
Η συνάρτηση split() επιστρέφει μια λίστα από τις λέξεις του κειμένου, διαχωρίζοντας το κείμενο στα σημεία αντιστοίχισης.
Παράδειγμα:
import re # Αρχικό κείμενο κείμενο = "Η Άννα καταναλώνει 2500 θερμίδες κάθε μέρα, ενώ ο Γιώργος καταναλώνει 3000 θερμίδες" # Καθορισμός της συνθήκης (regular expression pattern) συνθήκη = r"\d+" # Χρήση της συνάρτησης re.split() για τον διαχωρισμό του κειμένου με βάση τη συνθήκη αποτέλεσμα = re.split(συνθήκη, κείμενο) # Εκτύπωση του αποτελέσματος print(αποτέλεσμα)
Ο παραπάνω κώδικας χρησιμοποιεί την ενσωματωμένη βιβλιοθήκη re
της Python για να χειριστεί κείμενο και να το διαχωρίσει με βάση μια συνθήκη (regular expression pattern). Πιο συγκεκριμένα:
- Το αρχικό κείμενο που περιέχεται στη μεταβλητή
κείμενο
είναι:"Η Άννα καταναλώνει 2500 θερμίδες κάθε μέρα, ενώ ο Γιώργος καταναλώνει 3000 θερμίδες"
. - Η συνθήκη που καθορίζεται στη μεταβλητή
συνθήκη
είναι:r"\d+"
. Αυτή η συνθήκη αντιστοιχεί σε οποιονδήποτε αριθμητικό χαρακτήρα. - Η συνάρτηση
re.split()
χρησιμοποιείται για να διαχωρίσει το κείμενο με βάση τη συνθήκη. Επιστρέφει μια λίστα με τα τμήματα του κειμένου μετά τον διαχωρισμό. - Το αποτέλεσμα του διαχωρισμού αποθηκεύεται στη μεταβλητή
αποτέλεσμα
. - Τέλος, το αποτέλεσμα εκτυπώνεται με τη χρήση της εντολής
print(αποτέλεσμα)
.
Το αποτέλεσμα που θα εμφανιστεί στην οθόνη είναι μια λίστα που περιέχει τα τμήματα του κειμένου που έχουν διαχωριστεί με βάση τους αριθμούς που εμφανίζονται σε αυτό. Στην περίπτωση αυτή, το αποτέλεσμα θα είναι: ['Η Άννα καταναλώνει ', ' θερμίδες κάθε μέρα, ενώ ο Γιώργος καταναλώνει ', ' θερμίδες']
.
Μπορείτε να ελέγξετε τον αριθμό των επαναλήψεων προσδιορίζοντας την παράμετρο maxsplit:
Παράδειγμα – Διαχωρίστε το κείμενο μόνο στην πρώτη αντιστοιχία:
import re # Ορισμός του κειμένου που θα αναλυθεί κείμενο = "Η Άννα καταναλώνει 2500 θερμίδες κάθε μέρα, ενώ ο Γιώργος καταναλώνει 3000 θερμίδες" # Ορισμός της συνθήκης για την αναζήτηση αριθμών συνθήκη = r"\d+" # Χρήση της συνάρτησης split() του module re για να χωρίσουμε το κείμενο # βάσει της συνθήκης. Θέτουμε το maxsplit=1 για να πάρουμε μόνο την πρώτη διαχωρισμένη # λέξη και τον υπόλοιπο κείμενο. αποτέλεσμα = re.split(συνθήκη, κείμενο, maxsplit=1) # Εκτύπωση του αποτελέσματος print(αποτέλεσμα)
Ο παραπάνω κώδικας χρησιμοποιεί τη βιβλιοθήκη re
για να διαχωρίσει το κείμενο σε δύο μέρη. Ακολουθεί μια ανάλυση των σχολίων:
[adinserter block=”3″]
- Εισαγωγή της βιβλιοθήκης
re
. - Ορισμός του κειμένου που θα αναλυθεί στην μεταβλητή
κείμενο
. - Ορισμός της συνθήκης
συνθήκη
που αναζητεί ακολουθίες αριθμών μέσω της κανονικής έκφρασηςr"\d+"
. - Χρήση της συνάρτησης
split()
του modulere
για να χωρίσουμε το κείμενο βάσει της συνθήκης. Τοmaxsplit=1
θέτει όριο στον αριθμό των διαχωρισμών που θα πραγματοποιηθούν, έτσι ώστε να πάρουμε μόνο την πρώτη διαχωρισμένη λέξη και τον υπόλοιπο κείμενο. - Το αποτέλεσμα αποθηκεύεται στη μεταβλητή
αποτέλεσμα
. - Εκτύπωση του αποτελέσματος.
Εάν εκτελέσουμε τον παραπάνω κώδικα, το αποτέλεσμα που θα εμφανιστεί στην οθόνη θα είναι:
['Η Άννα καταναλώνει ', ' θερμίδες κάθε μέρα, ενώ ο Γιώργος καταναλώνει 3000 θερμίδες']
Το κείμενο έχει διαχωριστεί σε δύο μέρη, μεταξύ των οποίων είναι ο αριθμός 2500
. Η πρώτη λέξη Η Άννα καταναλώνει
αποτελεί το πρώτο στοιχείο της λίστας, ενώ ο υπόλοιπος κείμενος θερμίδες κάθε μέρα, ενώ ο Γιώργος καταναλώνει 3000 θερμίδες
αποτελεί το δεύτερο στοιχείο της λίστας.
Η συνάρτηση sub()
χρησιμοποιείται για την αντικατάσταση αντιστοιχιών σε ένα κείμενο με το επιλεγμένο κείμενο.
Παράδειγμα:
import re # Αρχικοποίηση μεταβλητών κείμενο = "Η Άννα καταναλώνει 2500 θερμίδες κάθε μέρα, ενώ ο Γιώργος καταναλώνει 3000 θερμίδες" συνθήκη = r"\d+" # Συνθήκη αναζήτησης που αντιπροσωπεύει μία ή περισσότερες διαδοχικές ψηφία αντικατάσταση = "X" # Χαρακτήρας αντικατάστασης αποτέλεσμα = re.sub(συνθήκη, αντικατάσταση, κείμενο) # Εκτύπωση του αποτελέσματος print(αποτέλεσμα)
Ο παραπάνω κώδικας χρησιμοποιεί τη βιβλιοθήκη re
(regular expression) για να αντικαταστήσει ψηφία που εμφανίζονται στο κείμενο με τον χαρακτήρα “X”. Ας δούμε πιο αναλυτικά τις ενέργειες που γίνονται:
- Εισαγωγή της βιβλιοθήκης
re
. - Ορισμός της μεταβλητής
κείμενο
που περιέχει το αρχικό κείμενο που θέλουμε να επεξεργαστούμε. - Ορισμός της μεταβλητής
συνθήκη
που περιέχει μια έκφραση αναζήτησης που αντιπροσωπεύει μία ή περισσότερες διαδοχικές ψηφία. Η συνθήκη εδώ είναι\d+
, όπου\d
συμβολίζει ένα ψηφίο και+
συμβολίζει ότι το ψηφίο μπορεί να εμφανιστεί μία ή περισσότερες φορές. - Ορισμός της μεταβλητής
αντικατάσταση
που περιέχει τον χαρακτήρα “X” που θα χρησιμοποιηθεί για την αντικατάσταση των ψηφίων. - Χρήση της συνάρτησης
re.sub()
για την εκτέλεση της αντικατάστασης. Η συνάρτηση αντικαθιστά όλες τις εμφανίσεις της συνθήκηςσυνθήκη
στοκείμενο
με την τιμή τηςαντικατάστασης
. - Το αποτέλεσμα της αντικατάστασης αποθηκεύεται στη μεταβλητή
αποτέλεσμα
. - Εκτύπωση του
αποτελέσματος
, που αντιπροσωπεύει το αρχικό κείμενο με την αντικατάσταση των ψηφίων με τον χαρακτήρα “X”.
Στην περίπτωση του παραδείγματος που δίνεται, το αποτέλεσμα θα είναι:
Η Άννα καταναλώνει X θερμίδες κάθε μέρα, ενώ ο Γιώργος καταναλώνει X θερμίδες
Όπου τα ψηφία “2500” και “3000” έχουν αντικατασταθεί από τον χαρακτήρα “X”.
Μπορείτε να προσδιορίσετε τον αριθμό των αντικαταστάσεων που θα γίνουν, χρησιμοποιώντας την παράμετρο count
στη συνάρτηση re.sub()
.
Παράδειγμα:
import re # Κείμενο που περιέχει αριθμούς θερμίδων για κάθε άτομο κείμενο = "Η Άννα καταναλώνει 2500 θερμίδες κάθε μέρα, ενώ ο Γιώργος καταναλώνει 3000 θερμίδες και ο Νίκος 2000 θερμίδες" # Έκφραση για τον έλεγχο αν υπάρχουν αριθμοί στο κείμενο συνθήκη = r"\d+" # Αντικατάσταση για τους αριθμούς που θα βρεθούν αντικατάσταση = "X" # Χρήση της μεθόδου re.sub() για την αντικατάσταση των αριθμών # με την αντίστοιχη αντικατάσταση, με count=2 για να γίνει # αντικατάσταση μόνο στους πρώτους δύο αριθμούς αποτέλεσμα = re.sub(συνθήκη, αντικατάσταση, κείμενο, count=2) # Εκτύπωση του αποτελέσματος print(αποτέλεσμα)
Ο παραπάνω κώδικας χρησιμοποιεί τη βιβλιοθήκη re
(regular expressions) για να αντικαταστήσει αριθμούς σε ένα κείμενο.
- Ο ορισμός
συνθήκη = r"\d+"
ορίζει μια έκφραση που αντιστοιχεί σε οποιονδήποτε αριθμητικό χαρακτήρα στο κείμενο. - Η μεταβλητή
αντικατάσταση
περιέχει την τιμή “X”, που θα χρησιμοποιηθεί για την αντικατάσταση των αριθμών που βρίσκονται. - Η μέθοδος
re.sub()
καλείται για να αντικαταστήσει τους αριθμούς με την τιμή “X” στο κείμενοκείμενο
. Ο παράμετροςcount
ορίζει τον αριθμό των αντικαταστάσεων που θα γίνουν, σε αυτήν την περίπτωση 2. - Το αποτέλεσμα της αντικατάστασης αποθηκεύεται στη μεταβλητή
αποτέλεσμα
και εκτυπώνεται.
Το αποτέλεσμα θα είναι:
Η Άννα καταναλώνει X θερμίδες κάθε μέρα, ενώ ο Γιώργος καταναλώνει X θερμίδες και ο Νίκος 2000 θερμίδες
Οι πρώτοι δύο αριθμοί στο κείμενο (“2500” και “3000”) αντικαταστάθηκαν με το γράμμα “X”, ενώ ο τελευταίος αριθμός (“2000”) παρέμεινε αμετάβλητος.
Ένα αντικείμενο Match είναι ένα αντικείμενο που περιέχει πληροφορίες σχετικά με μια αναζήτηση και το αποτέλεσμά της.
Σημείωση: Εάν δεν υπάρχει αντιστοίχιση, η τιμή None θα επιστραφεί αντί για το αντικείμενο Match.
Παράδειγμα – Κάντε μια αναζήτηση που θα επιστρέψει ένα αντικείμενο Match:
import re # Ορισμός του κειμένου που θα αναζητήσουμε κείμενο = "Η Άννα καταναλώνει 2500 θερμίδες κάθε μέρα" # Ορισμός της συνθήκης αναζήτησης με χρήση των regular expressions συνθήκη = r"\d+" # Εκτέλεση αναζήτησης χρησιμοποιώντας την re.search() αντιστοίχιση = re.search(συνθήκη, κείμενο) # Εκτύπωση της αντιστοίχισης print(αντιστοίχιση)
[adinserter block=”4″]
Ο παραπάνω κώδικας χρησιμοποιεί τη βιβλιοθήκη re
για να εκτελέσει αναζητήσεις με βάση μια συνθήκη (regular expression) σε ένα κείμενο.
- Ορίζουμε το κείμενο που θα αναζητήσουμε μέσα στη μεταβλητή
κείμενο
. - Ορίζουμε τη συνθήκη αναζήτησης με τη χρήση του regular expression
r"\d+"
. Αυτή η συνθήκη αντιστοιχεί σε μία ή περισσότερες διαδοχικές ψηφία. - Χρησιμοποιούμε την
re.search()
για να αναζητήσουμε τη συνθήκη μέσα στο κείμενο. Το αποτέλεσμα αποθηκεύεται στη μεταβλητήαντιστοίχιση
. - Εκτυπώνουμε την αντιστοίχιση που βρέθηκε με τη χρήση της
print()
.
Αν το κείμενο περιέχει έναν αριθμό, η αντιστοίχιση θα περιέχει την πρώτη αντιστοίχιση που βρέθηκε. Αν δεν βρεθεί καμία αντιστοίχιση, η τιμή της μεταβλητής αντιστοίχιση
θα είναι None
.
Το αποτέλεσμα θα είναι:
<re.Match object; span=(19, 23), match='2500'>
Παράδειγμα: – Εκτυπώστε τη θέση (αρχική και τελική θέση) της πρώτης εμφάνισης αντιστοίχισης.
Η κανονική έκφραση αναζητά λέξεις που αρχίζουν με κεφαλαίο “S”:
import re # Ορισμός του κειμένου που θα ελεγχθεί για αντιστοιχίσεις κείμενο = "Sofia and Stefanos are playing in the park" # Ορισμός της συνθήκης αναζήτησης χρησιμοποιώντας τον όρο \b για αντιστοίχιση με βάση τα όρια των λέξεων συνθήκη = r"\bS\w+" # Αναζήτηση αντιστοιχίσεων με τη χρήση της re.search() αντιστοίχιση = re.search(συνθήκη, κείμενο) # Έλεγχος αν βρέθηκε αντιστοίχιση if αντιστοίχιση: # Ανάκτηση των αρχικής και τελικής θέσης της αντιστοίχισης με την απόδοση στις μεταβλητές αρχή και τέλος αρχή, τέλος = αντιστοίχιση.span() # Εκτύπωση της θέσης της αντιστοίχισης print(f"Η θέση της αντιστοίχισης: Αρχή {αρχή}, Τέλος {τέλος}") else: print("Δεν βρέθηκε αντιστοίχιση")
Ο κώδικας παραπάνω δείχνει ένα παράδειγμα χρήσης της βιβλιοθήκης re
για την εύρεση αντιστοιχιών σε ένα κείμενο με βάση μια συνθήκη αναζήτησης.
Πρώτα, ορίζουμε το κείμενο που θα ελεγχθεί στη μεταβλητή κείμενο
και τη συνθήκη αναζήτησης στη μεταβλητή συνθήκη
. Η συνθήκη που χρησιμοποιούμε είναι r"\bS\w+"
, η οποία αντιστοιχεί σε μια λέξη που ξεκινά με το γράμμα “S”.
Στη συνέχεια, χρησιμοποιούμε τη συνάρτηση re.search()
για να αναζητήσουμε μια αντιστοίχιση στο κείμενο με βάση τη συνθήκη. Αν υπάρχει αντιστοίχιση, αποθηκεύουμε τις αρχική και τελική θέση της αντιστοίχισης στις μεταβλητές αρχή
και τέλος
.
Τέλος, ελέγχουμε αν υπάρχει αντιστοίχιση και εκτυπώνουμε τη θέση της αντιστοίχισης. Αν δεν υπάρχει αντιστοίχιση, εκτυπώνουμε το μήνυμα “Δεν βρέθηκε αντιστοίχιση”.
Το αποτέλεσμα θα είναι:
Η θέση της αντιστοίχισης: Αρχή 0, Τέλος 5
Αυτό σημαίνει ότι βρέθηκε μια αντιστοίχιση που αρχίζει από τη θέση 0 και τελειώνει στη θέση 5 στο κείμενο. Η αντιστοίχιση αυτή αντιστοιχεί στη λέξη “Sofia”.
Παράδειγμα: – Εκτυπώστε το string που περάστηκε στη συνάρτηση:
import re # Κείμενο για αντιστοίχιση κείμενο = "Sofia and Stefanos are playing in the park" # Συνθήκη για αναζήτηση συνθήκη = r"\bS\w+" # Αναζήτηση αντιστοίχισης στο κείμενο αντιστοίχιση = re.search(συνθήκη, κείμενο) # Ανάκτηση του εισαγωγικού κειμένου από την αντιστοίχιση εισαγωγικό_κείμενο = αντιστοίχιση.string # Εκτύπωση του εισαγωγικού κειμένου print(f"Το εισαγωγικό κείμενο είναι: {εισαγωγικό_κείμενο}")
Ο παραπάνω κώδικας χρησιμοποιεί τη βιβλιοθήκη re
για την εκτέλεση παραδείγματος αντιστοίχισης με τη χρήση κανόνων αναζήτησης (συνθήκη). Οι σχόλιοι παρακάτω παρέχουν αναλυτικές πληροφορίες για κάθε βήμα:
- Ορίζεται ένα κείμενο για αντιστοίχιση με το όνομα
κείμενο
. - Ορίζεται μια συνθήκη για αναζήτηση με το όνομα
συνθήκη
. Σε αυτήν την περίπτωση, η συνθήκη αντιπροσωπεύει μια λέξη που ξεκινά με το γράμμα “S”. - Η συνάρτηση
re.search()
χρησιμοποιείται για να αναζητήσει την πρώτη αντιστοίχιση της συνθήκης στο κείμενο. Το αποτέλεσμα αποθηκεύεται στη μεταβλητήαντιστοίχιση
. - Η μέθοδος
αντιστοίχιση.string
χρησιμοποιείται για να ανακτήσει το εισαγωγικό κείμενο που ταιριάζει με τη συνθήκη από το αρχικό κείμενο. Το αποτέλεσμα αποθηκεύεται στη μεταβλητήεισαγωγικό_κείμενο
. - Τέλος, εκτυπώνεται το εισαγωγικό κείμενο στην οθόνη χρησιμοποιώντας την εντολή
print()
.
Το αποτέλεσμα θα είναι:
Το εισαγωγικό κείμενο είναι: Sofia and Stefanos are playing in the park