⊗pyPmRESF 73 of 129 menu

Σημαίες για συμβολοσειρές κανονικών εκφράσεων στην Python

Για να ορίσετε σημαίες ως μία από τις προαιρετικές παραμέτρους για τις μεθόδους που λειτουργούν με κανονικές εκφράσεις, χρησιμοποιείται η ακόλουθη σύνταξη:

flags=re.όνομα σημαίας

Κύριες σημαίες για εργασία με κανονικές εκφράσεις

Σημαία Σκοπός
re.IGNORECASE Αγνόηση πεζών/κεφαλαίων γραμμάτων.
re.DOTALL Η τελεία υποδηλώνει οποιοδήποτε χαρακτήρα, συμπεριλαμβανομένης και της αλλαγής γραμμής.
re.I Κάνει την αναζήτηση αδιάφορη προς τα πεζά/κεφαλαία.
re.L Αναζητά λέξεις σύμφωνα με την τρέχουσα γλώσσα. Αυτή η ερμηνεία αφορά την αλφαβητική ομάδα (\w και \W), καθώς και τη συμπεριφορά του ορίου λέξης (\b και \B).
re.M Ο χαρακτήρας $ εκτελεί αναζήτηση στο τέλος οποιασδήποτε γραμμής κειμένου (όχι μόνο στο τέλος του κειμένου) και ο χαρακτήρας ^ εκτελεί αναζήτηση στην αρχή οποιασδήποτε γραμμής κειμένου (όχι μόνο στην αρχή του κειμένου).
re.S Αλλάζει την τιμή της τελείας (.) σε ταιριάζει με οποιονδήποτε χαρακτήρα, συμπεριλαμβανομένης της νέας γραμμής.
re.U Ερμηνεύει τα γράμματα σύμφωνα με το σύνολο χαρακτήρων Unicode. Αυτή η σημαία επηρεάζει τη συμπεριφορά των \w, \W, \b, \B. Στην Python 3+ αυτή η σημαία είναι ενεργοποιημένη από προεπιλογή.
re.X Επιτρέπει πολύγραμμη σύνταξη κανονικής έκφρασης. Αγνοεί τα κενά μέσα στο μοτίβο (εκτός από τα κενά μέσα σε ένα σύνολο [] ή όταν διαφεύγουν με ανάστροφη κάθετο) και αντιμετωπίζει τον μη διαφυγμένο '#' ως σχόλιο.

Παράδειγμα

Με τη σημαία re.IGNORECASE μπορείτε να αγνοήσετε τα πεζά/κεφαλαία γράμματα. Ας δούμε πώς γίνεται αυτό. Σ αυτό το παράδειγμα η κανονική έκφραση θα βρει μόνο τα πεζά γράμματα:

txt = 'aaa bbb CCC DDD' res = re.sub('[a-z]+', '!', txt) print(res)

Αποτέλεσμα εκτέλεσης κώδικα:

'! ! CCC DDD'

Παράδειγμα

Και τώρα θα προσθέσουμε στην τέταρτη παράμετρο της μεθόδου τη σημαία re.IGNORECASE και η κανονική έκφραση θα αρχίσει να αναζητά χαρακτήρες σε όλα τα πεζά/κεφαλαία:

txt = 'aaa AAA bbb BBB' res = re.sub('[a-z]+', '!', txt, flags=re.IGNORECASE) print(res)

Αποτέλεσμα εκτέλεσης κώδικα:

'! ! ! !'

Παράδειγμα

Ας βρούμε με κανονική έκφραση όλες τις αλλαγές γραμμής:

txt = '''aaa bbb''' res = re.sub('\n', '!', txt) print(res)

Αποτέλεσμα εκτελεσμένου κώδικα:

'aaa!bbb'

Παράδειγμα

Όμως, εάν χρειαστεί να αντικαταστήσετε όλους τους χαρακτήρες, τότε βάζοντας μια τελεία στην κανονική έκφραση, δεν θα συμπεριληφθούν οι αλλαγές γραμμής:

txt = '''aaa bbb''' res = re.sub('.', '!', txt) print(res)

Αποτέλεσμα εκτελεσμένου κώδικα:

'!!! !!!'

Παράδειγμα

Για να διορθώσετε αυτό το σφάλμα, πρέπει να εφαρμόσετε τη σημαία re.DOTALL:

res = re.sub('.', '!', txt, flags=re.DOTALL) print(res)

Αποτέλεσμα εκτελεσμένου κώδικα:

'!!!!!!!'

Παράδειγμα

Στην παράμετρο μπορούν να μεταβιβαστούν και πολλές σημαίες, βάζοντας μεταξύ τους τον τελεστή +. Ας αντικαταστήσουμε πρώτα το γράμμα 'a' στο τέλος της γραμμής:

txt = ''' aaa AAA aaa''' res = re.sub('aaa$', '!', txt) print(res)

Αποτέλεσμα εκτελεσμένου κώδικα:

''' aaa AAA ! '''

Παράδειγμα

Τώρα ας βάλουμε τη σημαία re.M:

res = re.sub('aaa$', '!', txt, flags=re.M) print(res)

Αποτέλεσμα εκτελεσμένου κώδικα:

''' ! AAA ! '''

Παράδειγμα

Ας εφαρμόσουμε τώρα και τη σημαία για αγνόηση πεζών/κεφαλαίων:

res = re.sub('aaa$', '!', txt, flags=re.M+re.IGNORECASE) print(res)

Αποτέλεσμα εκτελεσμένου κώδικα:

''' ! ! ! '''
Ελληνικά
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Χρησιμοποιούμε cookie για τη λειτουργία του ιστότοπου, την ανάλυση και την εξατομίκευση. Η επεξεργασία των δεδομένων γίνεται σύμφωνα με την Πολιτική Απορρήτου.
αποδοχή όλων ρύθμιση απόρριψη