Παραδείγματα Python Regex

Paradeigmata Python Regex



Η πλήρης μορφή του regex είναι κανονική έκφραση. Είναι ένα σημαντικό χαρακτηριστικό οποιασδήποτε γλώσσας προγραμματισμού. Είναι ένα μοτίβο συμβολοσειράς που χρησιμοποιείται για αντιστοίχιση, αναζήτηση ή αντικατάσταση των συμβολοσειρών σε μια τιμή συμβολοσειράς. Το μοτίβο regex μπορεί να χρησιμοποιηθεί στο σενάριο Python χρησιμοποιώντας τη λειτουργική μονάδα 're' της Python. Αυτή η ενότητα έχει πολλούς τύπους συναρτήσεων για την εκτέλεση διαφορετικών λειτουργιών συμβολοσειράς. Διαφορετικοί μεταχαρακτήρες και ειδικές ακολουθίες χρησιμοποιούνται για τον καθορισμό των μοτίβων regex για αναζήτηση ή αντικατάσταση των εργασιών. Οι σκοποί της χρήσης ορισμένων κοινώς χρησιμοποιούμενων μεταχαρακτόρων, ειδικών ακολουθιών και μεθόδων regex στο σενάριο Python παρουσιάζονται σε αυτό το σεμινάριο.

Μερικοί μεταχαρακτήρες που χρησιμοποιούνται συνήθως στο regex:









Χαρακτήρες Σκοπός
'+' Χρησιμοποιείται για να αντιστοιχίσει μία ή περισσότερες εμφανίσεις ενός συγκεκριμένου χαρακτήρα σε μια συμβολοσειρά.
'*' Χρησιμοποιείται για την αντιστοίχιση μηδενικών ή περισσότερων εμφανίσεων ενός συγκεκριμένου χαρακτήρα σε μια συμβολοσειρά.
';' Χρησιμοποιείται για την αντιστοίχιση μηδέν ή μίας εμφάνισης ενός συγκεκριμένου χαρακτήρα σε μια συμβολοσειρά.
'^' Χρησιμοποιείται για να ταιριάζει με τον συγκεκριμένο χαρακτήρα ή συμβολοσειρά στην αρχή της συμβολοσειράς.
'$' Χρησιμοποιείται για να ταιριάζει με τον συγκεκριμένο χαρακτήρα ή τη συμβολοσειρά στο τέλος της συμβολοσειράς.
'|' Χρησιμοποιείται για να ταιριάζει με οποιαδήποτε από τις πολλαπλές συμβολοσειρές σε μια συμβολοσειρά. Λειτουργεί όπως η λογική OR.
'[]' Χρησιμοποιείται για να ταιριάζει με μια σειρά χαρακτήρων.
'{}' Χρησιμοποιείται για την αντιστοίχιση συγκεκριμένου αριθμού χαρακτήρων.



Μερικές ειδικές ακολουθίες που χρησιμοποιούνται συνήθως στο regex:





Ακολουθίες Σκοπός
'\ΕΝΑ' Χρησιμοποιείται για να ταιριάζει με τον συγκεκριμένο χαρακτήρα στην αρχή της συμβολοσειράς. Λειτουργεί όπως ο χαρακτήρας '^'.
'\b', '\B' Το '\b' χρησιμοποιείται για να ταιριάζει με τη συμβολοσειρά που περιέχει τον συγκεκριμένο χαρακτήρα ή λέξη στην αρχή ή στο τέλος της συμβολοσειράς. Το '\B' λειτουργεί αντίθετα από το '\b'.
'\d', '\D' Το '\d' χρησιμοποιείται για να ταιριάζει με τον δεκαδικό αριθμό στη συμβολοσειρά που είναι παρόμοιος με το '[0-9]'. Το '\D' λειτουργεί αντίθετα από το '\d'.
'\s', '\S' Το '\s' χρησιμοποιείται για να ταιριάζει με το κενό διάστημα στη συμβολοσειρά που είναι παρόμοιο με το '[\n\t\r\v]'. Το '\S' λειτουργεί αντίθετα από το '\s'.
'\w', '\W' Το '\w' χρησιμοποιείται για να ταιριάζει με τους αλφαβητικούς και τους αριθμούς χαρακτήρες στη συμβολοσειρά. Το '\W' λειτουργεί αντίθετα από το '\w'.
'\ΜΕ' Χρησιμοποιείται για να ταιριάζει με τον συγκεκριμένο χαρακτήρα στο τέλος της συμβολοσειράς. Λειτουργεί όπως ο χαρακτήρας '$'.

Παράδειγμα 1: Αντιστοιχίστε τη συμβολοσειρά χρησιμοποιώντας τη συνάρτηση Match().

Η συνάρτηση match() χρησιμοποιείται για να ταιριάζει με ένα μοτίβο regex στην αρχή της συμβολοσειράς. Η σύνταξη αυτής της συνάρτησης δίνεται ως εξής:



Σύνταξη:

εκ νέου αγώνα ( μοτίβο, κορδόνι, σημαίες = 0 )

Εδώ, το πρώτο όρισμα χρησιμοποιείται για να ορίσει το regex μοτίβο. Το δεύτερο όρισμα χρησιμοποιείται για τον ορισμό της κύριας συμβολοσειράς. Το τρίτο όρισμα είναι προαιρετικό και χρησιμοποιείται για τον ορισμό διαφορετικών τύπων σημαιών.

Δημιουργήστε ένα αρχείο Python με το ακόλουθο σενάριο που ταιριάζει με ένα μοτίβο regex με μια καθορισμένη συμβολοσειρά χρησιμοποιώντας τη συνάρτηση match(). Αρχικά, χρησιμοποιείται ένα καθορισμένο μοτίβο regex για αντιστοίχιση. Στη συνέχεια, μια λέξη αναζήτησης λαμβάνεται από τον χρήστη και χρησιμοποιείται ως regex μοτίβο για να ταιριάζει με την τιμή συμβολοσειράς. Εάν βρεθεί αντιστοιχία, εκτυπώνεται η λέξη αναζήτησης. Διαφορετικά, εκτυπώνεται η συμβολοσειρά 'Δεν βρέθηκε αντίστοιχη τιμή'.

#Εισαγωγή απαραίτητης ενότητας
εισαγωγή ρε

#Ορίστε τη συνάρτηση για την εκτύπωση του αντίστοιχου αποτελέσματος
Def matchString ( ) :
#Ελέγξτε την επιστρεφόμενη τιμή της συνάρτησης match().
αν μαζί με ! = Κανένα:
Τυπώνω ( ''' + ματ.ομάδα ( ) + Το '' βρίσκεται στο '' + strValue + ''' )
αλλού:
Τυπώνω ( 'Δεν βρέθηκε τιμή που να ταιριάζει.' )

#Ορίστε την τιμή συμβολοσειράς
strValue = «Πρώτος στην πρώτη έξοδος».
#Ταίριαξε τη χορδή με βάση το μοτίβο
ματ = επαν.ταίριασμα ( '^Πρώτα' , strValue )
#Κλήση λειτουργίας για εκτύπωση του αποτελέσματος αγώνα
matchString ( )

#Πάρτε τη συμβολοσειρά αναζήτησης
inValue = είσοδος ( 'Εισαγάγετε την τιμή αναζήτησης: ' )
ματ = επαν.ταίριασμα ( inValue + , strValue )
#Κλήση λειτουργίας για εκτύπωση του αποτελέσματος αγώνα
matchString ( )

Η ακόλουθη έξοδος εμφανίζεται για την 'πρώτη' τιμή εισόδου:

Παράδειγμα 2: Βρείτε τη συμβολοσειρά χρησιμοποιώντας τη συνάρτηση Findall().

Η συνάρτηση findall() χρησιμοποιείται για να επιστρέψει όλες τις αντίστοιχες λέξεις που βρίσκονται στην κύρια συμβολοσειρά ως πλειάδα.

Σύνταξη:

re.findall ( μοτίβο, κορδόνι, σημαίες = 0 )

Εδώ, το πρώτο όρισμα χρησιμοποιείται για να ορίσει το regex μοτίβο. Το δεύτερο όρισμα χρησιμοποιείται για τον ορισμό της κύριας συμβολοσειράς. Το τρίτο όρισμα είναι προαιρετικό και χρησιμοποιείται για τον ορισμό διαφορετικών τύπων σημαιών.

Δημιουργήστε ένα αρχείο Python με το ακόλουθο σενάριο που παίρνει μια τιμή κύριας συμβολοσειράς και μια τιμή συμβολοσειράς αναζήτησης από τον χρήστη. Στη συνέχεια, χρησιμοποιήστε τη λέξη αναζήτησης στο μοτίβο regex για να βρείτε τη λέξη αναζήτησης στην κύρια συμβολοσειρά. Ο αριθμός των συνολικών αντιστοιχιών εκτυπώνεται στην έξοδο.

#Εισαγωγή απαραίτητης ενότητας
εισαγωγή ρε

#Πάρτε μια τιμή συμβολοσειράς
inValue = είσοδος ( 'Εισαγάγετε μια συμβολοσειρά:' )

#Λάβετε μια λέξη αναζήτησης
srcValue = είσοδος ( 'Εισαγάγετε μια λέξη αναζήτησης: ' )

#Αναζητήστε τη λέξη στη συμβολοσειρά
srcResult = re.findall ( srcValue + '\Σε*' , σε αξία )
#Εκτυπώστε το αποτέλεσμα αναζήτησης
Τυπώνω ( 'Η λέξη '' + srcValue + Το '' βρίσκεται στη συμβολοσειρά'
+ στρ ( μόνο ( srcΑποτέλεσμα ) ) + ' φορές.' )

Σύμφωνα με το αποτέλεσμα, η λέξη αναζήτησης 'τρώω' βρίσκεται δύο φορές στην κύρια συμβολοσειρά 'Τρώμε για να ζούμε και δεν ζούμε για να τρώμε'.

Παράδειγμα 3: Αναζήτηση στη συμβολοσειρά χρησιμοποιώντας τη συνάρτηση Search().

Η αναζήτηση() είναι μια άλλη συνάρτηση για την αναζήτηση ενός συγκεκριμένου μοτίβου σε μια τιμή συμβολοσειράς. Περιέχει τα ίδια ορίσματα με τις συναρτήσεις match() και findall(). Δημιουργήστε ένα αρχείο Python με το ακόλουθο σενάριο που αναζητά τη λέξη 'Python' σε μια τιμή συμβολοσειράς που θα ληφθεί από τον χρήστη. Εάν η λέξη αναζήτησης υπάρχει στην τιμή εισόδου, εκτυπώνεται ένα μήνυμα επιτυχίας. Διαφορετικά, εκτυπώνεται ένα μήνυμα αποτυχίας.

#Import re module
εισαγωγή ρε

#Πάρτε μια τιμή συμβολοσειράς
inValue = είσοδος ( 'Εισαγάγετε μια συμβολοσειρά:' )
#Αναζητήστε τη συγκεκριμένη λέξη στην τιμή συμβολοσειράς
srcResult = επαναναζήτηση ( r 'Python\w*' , σε αξία )

#Ελέγξτε ότι η λέξη αναζήτησης βρέθηκε ή όχι
αν srcΑποτέλεσμα:
Τυπώνω ( ''' + srcResult.group ( ) + Το '' βρίσκεται στο '' + inValue + ''' )
αλλού:
Τυπώνω ( 'Η συμβολοσειρά αναζήτησης δεν βρέθηκε.' )

Παραγωγή:

Η ακόλουθη έξοδος εμφανίζεται εάν η συμβολοσειρά εισόδου είναι 'Μου αρέσει ο προγραμματισμός Python':

Η ακόλουθη έξοδος εμφανίζεται εάν η συμβολοσειρά εισόδου είναι 'Μου αρέσει ο προγραμματισμός PHP':

Παράδειγμα 4: Αντικαταστήστε τη συμβολοσειρά χρησιμοποιώντας τη συνάρτηση Sub().

Η συνάρτηση sub() χρησιμοποιείται για την αναζήτηση μιας συγκεκριμένης συμβολοσειράς με βάση το μοτίβο και την αντικατάστασή της με μια άλλη λέξη. Η σύνταξη αυτής της συνάρτησης δίνεται ως εξής:

Σύνταξη:

ανα.υπο ( μοτίβο, αντικατάσταση_string, main_string )

Το πρώτο όρισμα αυτής της συνάρτησης περιέχει το μοτίβο που χρησιμοποιείται για την αναζήτηση της συγκεκριμένης συμβολοσειράς στην κύρια συμβολοσειρά.

Το δεύτερο όρισμα αυτής της συνάρτησης περιέχει την τιμή συμβολοσειράς “replace”.

Το τρίτο όρισμα αυτής της συνάρτησης περιέχει την κύρια συμβολοσειρά.

Αυτή η συνάρτηση επιστρέφει την αντικατασταθείσα συμβολοσειρά εάν υπάρχει κάποια αντίστοιχη λέξη στην κύρια συμβολοσειρά με βάση το πρώτο όρισμα.

Δημιουργήστε ένα αρχείο Python με το ακόλουθο σενάριο που αναζητά δύο ψηφία στο τέλος της συμβολοσειράς. Εάν η συμβολοσειρά περιέχει δύο ψηφία στο τέλος, τα ψηφία αντικαθίστανται από τη συμβολοσειρά '$50'.

#Import re module
εισαγωγή ρε

#Ορίστε την κύρια συμβολοσειρά
strValue = 'Η τιμή του βιβλίου είναι 70'

#Ορίστε το μοτίβο αναζήτησης
μοτίβο = '[0-9]{2}'

#Ορίστε την τιμή αντικατάστασης
αντικατάσταση τιμή = '50$'

#Αναζήτηση και αντικατάσταση της συμβολοσειράς με βάση το μοτίβο
modified_strValue = re.sub ( μοτίβο, αντικατάσταση τιμής, strValue )
#Εκτυπώστε τις αρχικές και τροποποιημένες τιμές συμβολοσειράς
Τυπώνω ( 'Αρχική συμβολοσειρά:' + strValue )
Τυπώνω ( 'Τροποποιημένη συμβολοσειρά: ' + modified_strValue )

Παραγωγή:

Υπήρχαν 70 στο τέλος της κύριας χορδής. Έτσι, το 70 αντικαθίσταται από 50 $ στην αντικατασταθείσα συμβολοσειρά.

Παράδειγμα 5: Αντικαταστήστε τη συμβολοσειρά χρησιμοποιώντας τη συνάρτηση Subn().

Η συνάρτηση subn() λειτουργεί όπως η συνάρτηση sub(), εκτός από το ότι επιστρέφει την έξοδο ως πλειάδα όπου ο πρώτος δείκτης περιέχει την αντικατασταθείσα τιμή και ο δεύτερος δείκτης περιέχει τον συνολικό αριθμό αντιστοιχιών.

Δημιουργήστε ένα αρχείο Python με το ακόλουθο σενάριο που αναζητά τα αλφάβητα A έως L στη συμβολοσειρά 'LinuxHint.com' χρησιμοποιώντας τη συνάρτηση subn():

#Import re module
εισαγωγή ρε

#Ορίστε την κύρια συμβολοσειρά
strValue = 'LinuxHint.com'

#Ορίστε το μοτίβο αναζήτησης
μοτίβο = '[ΣΤΟ]'

#Ορίστε την τιμή αντικατάστασης
αντικατάσταση τιμή = '*'

#Αναζήτηση και αντικατάσταση της συμβολοσειράς με βάση το μοτίβο
modified_strValue = re.subn ( μοτίβο, αντικατάσταση τιμής, strValue )
#Εκτυπώστε την αρχική συμβολοσειρά και την έξοδο του subn()
Τυπώνω ( 'Αρχική συμβολοσειρά: \n ' + strValue )
Τυπώνω ( 'Έξοδος της συνάρτησης subn():' )
Τυπώνω ( modified_strValue )

Παραγωγή:

Σύμφωνα με την ακόλουθη έξοδο, οι χαρακτήρες 'L' και 'H' αντικαθίστανται από τον χαρακτήρα '*'.

Παράδειγμα 6: Διαχωρίστε τη συμβολοσειρά χρησιμοποιώντας τη συνάρτηση Split().

Δημιουργήστε ένα αρχείο Python με το ακόλουθο σενάριο που χρησιμοποίησε τη συνάρτηση split() για να χωρίσει την κύρια συμβολοσειρά σε πολλά μέρη με βάση το μοτίβο regex:

#Import re module
εισαγωγή ρε

#Ορισμός τιμής συμβολοσειράς
strVal= 'Rupa Akter;Nira Chowdhury;Mazharul Islam'
#Ορίστε το μοτίβο που θα χρησιμοποιηθεί για τον διαχωρισμό των δεδομένων
μοτίβο = '[^A-Za-z ]'
#Αποθηκεύστε τις τιμές διαχωρισμού σε μια λίστα
split_result = εκ νέου διαχωρισμός ( μοτίβο, strVal )
Τυπώνω ( 'Έξοδος της συνάρτησης split():' )
Τυπώνω ( split_result )

Παραγωγή:

Σύμφωνα με την έξοδο, η κύρια συμβολοσειρά χωρίζεται σε τρία μέρη με βάση το μοτίβο '[^A-Za-z ]' που χρησιμοποιείται στο σενάριο.

συμπέρασμα

Ο σκοπός των πιο συχνά χρησιμοποιούμενων μεταχαρακτόρων, περιοχών και ενσωματωμένων συναρτήσεων Python για αναζήτηση, αντικατάσταση και διαίρεση των συμβολοσειρών παρουσιάζεται σε αυτό το σεμινάριο χρησιμοποιώντας απλά σενάρια Python.