RegEx Python

Το RegEx ή η τυπική έκφραση είναι μια ακολουθία χαρακτήρων που δημιουργεί το μοτίβο αναζήτησης.

Το RegEx μπορεί να χρησιμοποιηθεί για τον έλεγχο αν μια αλφαριθμητική ακολουθία περιέχει το καθορισμένο μοτίβο αναζήτησης.

RegEx

Python προσφέρει μια μονάδα με το όνομα re Το ενσωματωμένο πακέτο, μπορεί να χρησιμοποιηθεί για τη διαχείριση των εξωτερικών εκφράσεων。

Εισαγωγή re Μódulo

import re

Python RegEx

Εισαγωγή re Μετά την εισαγωγή του módulo, μπορείτε να ξεκινήσετε να χρησιμοποιείτε τις εξωτερικές εκφράσεις

Παράδειγμα

Ανακάλυψη αλφαβητικής συμβολοσειράς για να δούμε αν ξεκινά με "China" και τελειώνει με "country":

import re
txt = "China is a great country"
x = re.search("^China.*country$", txt)

Εκτέλεση Παραδείγματος

Συναρτήσεις RegEx

re Ο módulo παρέχει ένα σύνολο συναρτήσεων που επιτρέπουν την ανακάλυψη αλφαβητικών συμβολοσειρών για αντιστοιχίες:

Σύμβολο Περιγραφή
findall Επιστρέφει μια λίστα που περιέχει όλες τις αντιστοιχίες
search Εάν υπάρχει αντιστοιχία σε οποιαδήποτε θέση της αλφαβητικής συμβολοσειράς, τότε επιστρέφει το αντικείμενο Match
split Επιστρέφει μια λίστα που διαχωρίζει την αλφαβητική συμβολοσειρά σε κάθε αντιστοιχία
sub Αντικατάσταση μιας ή περισσότερων αντιστοιχιών με μια αλφαβητική συμβολοσειρά

Μηχανικός χαρακτήρας

Μηχανικός χαρακτήρας είναι ο χαρακτήρας που έχει ειδική σημασία:

Χαρακτήρας Περιγραφή Παράδειγμα TIY
[] Συνολο χαρακτήρων "[a-m]" Προσπαθήστε:
\ Συμβολισμός ειδικής ακολουθίας (μήνυμα που μπορεί να χρησιμοποιηθεί και για την εξήγηση ειδικών χαρακτήρων) "\d" Προσπαθήστε:
. Κάποια χαρακτήρα (εκτός από τον χαρακτήρα νέας γραμμής) "he..o" Προσπαθήστε:
^ Άρχιση "^hello" Προσπαθήστε:
$ Τέλος "world$" Προσπαθήστε:
* Καμία ή περισσότερες εμφανίσεις "aix*" Προσπαθήστε:
+ Μία ή περισσότερες εμφανίσεις "aix+" Προσπαθήστε:
{} Συγκεκριμένη αναπαράσταση εμφάνισης "al{2}" Προσπαθήστε:
| Και οι δύο "falls|stays" Προσπαθήστε:
() Κατάληψη και Ομαδοποίηση

Ειδική ακολουθία σημειωμάτων

Ειδική ακολουθία σημειωμάτων είναι \ Ακολουθεί με κάποιον χαρακτήρα από την παρακάτω τάβληση, έχει ειδική σημασία:

Χαρακτήρας Περιγραφή Παράδειγμα TIY
\A Εάν ο καθορισμένος χαρακτήρας βρίσκεται στην αρχή της αλφαβητικής συμβολοσειράς, τότε επιστρέφει την αντιστοιχία "\AThe" Προσπαθήστε:
\b Επιστρέφει μια αντιστοιχία που περιέχει τον καθορισμένο χαρακτήρα στην αρχή ή στο τέλος της λέξης r"\bain"
r"rain\b"
Προσπαθήστε:
Προσπαθήστε:
\B Επιστρέφει μια αντιστοιχία που περιέχει τον καθορισμένο χαρακτήρα, αλλά δεν βρίσκεται στην αρχή (ή στο τέλος) της λέξης r"\Bain"
r"rain\B"
Προσπαθήστε:
Προσπαθήστε:
\d Επιστρέφει μια αντιστοιχία που περιέχει αριθμούς (αριθμοί 0-9) "\d" Προσπαθήστε:
\D Επιστρέφει μια αντιστοιχία που δεν περιέχει αριθμούς "\D" Προσπαθήστε:
\s Επιστρέφει μια αντιστοιχία που περιέχει χαρακτήρες κενής θέσης "\s" Προσπαθήστε:
\S Επιστρέφει μια αντιστοιχία που δεν περιέχει χαρακτήρες κενής θέσης "\S" Προσπαθήστε:
\w Επιστρέφει μια αντιστοιχία, όπου η αλφαβητική συμβολοσειρά περιέχει οποιονδήποτε χαρακτήρα λέξης
(από το a έως το Z, από το 0 έως το 9 και ο χαρακτήρας επιλογής _)
"\w" Προσπαθήστε:
\W Επιστρέφει μια αντιστοιχία, όπου η αλφαβητική συμβολοσειρά δεν περιέχει κανένα χαρακτήρα λέξης "\W" Προσπαθήστε:
\Z Εάν ο καθορισμένος χαρακτήρας βρίσκεται στο τέλος της αλφαβητικής συμβολοσειράς, τότε επιστρέφει την αντιστοιχία "Spain\Z" Προσπαθήστε:

集合(Set)

Η συλλογή (Set) είναι ένα ζευγάρι παρενθέσεων: [] Μια ομάδα χαρακτήρων που έχει ειδική σημασία μέσα σε:

Συλλογή Περιγραφή Προσπαθήστε:
[arn] Επιστρέφει τη σύμβαση οποιουδήποτε χαρακτήρα που περιέχει έναν από τους χαρακτήρες a, r ή n: Προσπαθήστε:
[a-n] Επιστρέφει τη σύμβαση οποιουδήποτε μικρού χαρακτήρα μεταξύ των αλφαβητικών a και n: Προσπαθήστε:
[^arn] Επιστρέφει τη σύμβαση οποιουδήποτε χαρακτήρα που δεν περιέχει τους χαρακτήρες a, r ή n: Προσπαθήστε:
[0123] Επιστρέφει τη σύμβαση οποιουδήποτε χαρακτήρα που περιέχει οποιοδήποτε από τους αριθμούς 0, 1, 2 ή 3: Προσπαθήστε:
[0-9] Επιστρέφει τη σύμβαση οποιουδήποτε αριθμού μεταξύ 0 και 9: Προσπαθήστε:
[0-5][0-9] Επιστρέφει τη σύμβαση οποιουδήποτε αριθμού μεταξύ 0 και 9: Προσπαθήστε:
[a-zA-Z] Επιστρέφει τη σύμβαση οποιουδήποτε χαρακτήρα μεταξύ των αλφαβητικών a και z, μικρός ή μεγάλος: Προσπαθήστε:
[+] Στη συλλογή, τα +, *, ., |, (), $, {} δεν έχουν ειδική σημασία, οπότε το [+] σημαίνει: επιστρέφει τα συνδυασμένα στοιχεία με κάθε + χαρακτήρα στη συμβολοσειρά Προσπαθήστε:

Η συνάρτηση findall()

findall() Η συνάρτηση επιστρέφει μια λίστα που περιέχει όλες τις συμβάσεις.

Παράδειγμα

Εκτυπώνεται η λίστα με όλες τις συμβάσεις:

import re
str = "China is a great country"
x = re.findall("a", str)
print(x)

Εκτέλεση Παραδείγματος

Η λίστα περιέχει τις συμβάσεις που βρέθηκαν κατά σειρά:

Αν δεν βρεθεί σύμβαση, επιστρέφεται κενή λίστα:

Παράδειγμα

Αν δεν βρεθεί σύμβαση, επιστρέφεται κενή λίστα:

import re
str = "China is a great country"
x = re.findall("USA", str)
print(x)

Εκτέλεση Παραδείγματος

Η συνάρτηση search()

search() Η συνάρτηση αναζητά τη σύμβαση στη συμβολοσειρά και επιστρέφει το αντικείμενο Match αν υπάρχει σύμβαση.

Αν υπάρχουν πολλαπλές συμβάσεις, επιστρέφεται μόνο η πρώτη σύμβαση:

Παράδειγμα

Αναζητείται ο πρώτος κενός χαρακτήρας στη συμβολοσειρά:

import re
str = "China is a great country"
x = re.search("\s", str)
print("Το πρώτο κενό χαρακτήρα βρίσκεται στη θέση:", x.start())

Εκτέλεση Παραδείγματος

Αν δεν βρεθεί σύμβαση, επιστρέφεται η τιμή: Κενό:

Παράδειγμα

Εκτελεί αναζήτηση χωρίς να επιστρέφει τη σύμβαση:

import re
str = "China is a great country"
x = re.search("USA", str)
print(x)

Εκτέλεση Παραδείγματος

Η συνάρτηση split()

split() Η συνάρτηση επιστρέφει μια λίστα, όπου η αλφαβητική ακολουθία διαιρείται σε κάθε ταινία που ταιριάζει:

Παράδειγμα

Διαχωρίζεται σε κάθε κενό χαρακτήρα:

import re
str = "China is a great country"
x = re.split("\s", str)
print(x)

Εκτέλεση Παραδείγματος

Μπορείτε να καθορίσετε maxsplit Παράμετρος για τον έλεγχο της εμφάνισης:

Παράδειγμα

Αντιμετωπίζεται η διαχωριστική γραμμή μόνο στη πρώτη εμφάνιση:

import re
str = "China is a great country"
x = re.split("\s", str, 1)
print(x)

Εκτέλεση Παραδείγματος

Η συνάρτηση sub()

sub() Η συνάρτηση αντικαθιστά τη σύμβαση με το κείμενο που επιλέξατε:

Παράδειγμα

Για να αντικαταστήσουμε κάθε κενό χαρακτήρα με τον αριθμό 9:

import re
str = "China is a great country"
x = re.sub("\s", "9", str)
print(x)

Εκτέλεση Παραδείγματος

Μπορείτε να καθορίσετε count Παράμετρος για τον έλεγχο του αριθμού αντικαταστάσεων:

Παράδειγμα

Αντικατάσταση των δύο πρώτων εμφανίσεων:

import re
str = "China is a great country"
x = re.sub("\s", "9", str, 2)
print(x)

Εκτέλεση Παραδείγματος

Αντικείμενο Match

Το αντικείμενο Match είναι το αντικείμενο που περιέχει πληροφορίες σχετικά με την αναζήτηση και τα αποτελέσματα.

Σημείωση:Εάν δεν υπάρχει ταιριάσματα, επιστρέφεται η τιμή ΚενόΚαι όχι το αντικείμενο Match.

Παράδειγμα

Η εκτέλεση θα επιστρέψει το αντικείμενο Match της αναζήτησης:

import re
str = "China is a great country"
x = re.search("a", str)
print(x) # Θα εκτυπωθεί ένα αντικείμενο

Εκτέλεση Παραδείγματος

Το αντικείμενο Match παρέχει ιδιότητες και μεθόδους για την απόκτηση πληροφοριών σχετικά με την αναζήτηση και τα αποτελέσματα:

  • span() Το τρίο που επιστρέφεται περιλαμβάνει την θέση έναρξης και τέλους του ταιριάσματος
  • .string Επιστροφή της συμβολοσειράς που εισήχθη στη συνάρτηση
  • group() Επιστροφή του τμήματος της συναρμολογημένης συμβολοσειράς που ταιριάζει

Παράδειγμα

Εκτύπωση της θέσης της πρώτης ταιριάσματος που εμφανίζεται (θέση έναρξης και τέλους)

Αναζήτηση της παρακείμενης έκφρασης που ξεκινά με το κεφαλαίο "C" για οποιοδήποτε λέμμα:

import re
str = "China is a great country"
x = re.search(r"\bC\w+", str)
print(x.span())

Εκτέλεση Παραδείγματος

Παράδειγμα

Εκτύπωση της συμβολοσειράς που εισήχθη στη συνάρτηση:

import re
str = "China is a great country"
x = re.search(r"\bC\w+", str)
print(x.string)

Εκτέλεση Παραδείγματος

Παράδειγμα

Εκτύπωση του τμήματος της συναρμολογημένης συμβολοσειράς που ταιριάζει.

Αναζήτηση της παρακείμενης έκφρασης που ξεκινά με το κεφαλαίο "C" για οποιοδήποτε λέμμα:

import re
str = "China is a great country"
x = re.search(r"\bC\w+", str)
print(x.group())

Εκτέλεση Παραδείγματος

Σημείωση:Εάν δεν υπάρχει σύγκριση, επιστρέφεται η τιμή ΚενόΚαι όχι το αντικείμενο Match.