⊗pyPmREHHy 47 of 129 menu

Παύλα εντός συνόλων στις κανονικές εκφράσεις της Python

Η παύλα - είναι επίσης ειδικός χαρακτήρας μέσα στα [ ] (αλλά έξω - όχι). Εάν χρειάζεστε την ίδια την παύλα ως χαρακτήρα - τότε τοποθετήστε την σε θέση, όπου δεν θα γίνει αντιληπτή ως διαχωριστής ομάδας.

Γιατί αυτό είναι σημαντικό: μπορείτε να δημιουργήσετε μια ομάδα χαρακτήρων, χωρίς να το καταλάβετε. Για παράδειγμα, έτσι - '[:-@]' - νομίζετε ότι επιλέγετε την άνω και κάτω τελεία, την παύλα και το at, αλλά στην πραγματικότητα προκύπτει μια ομάδα χαρακτήρων ανάμεσα στο : και στο @. Σε αυτήν την ομάδα περιλαμβάνονται οι ακόλουθοι χαρακτήρες: ? < = > :

Από πού προέρχονται; Από τον πίνακα ASCII - η άνω και κάτω τελεία έχει μικρότερο αριθμό από το at - και προκύπτει ομάδα. Δηλαδή όλες οι ομάδες προκύπτουν βάσει του πίνακα ASCII (αν θέλετε μπορείτε να το χρησιμοποιήσετε αυτό).

Πώς να το αντιμετωπίσετε: τοποθετήστε τον χαρακτήρα παύλας σε θέση όπου σίγουρα δεν θα γίνει αντιληπτή ως χαρακτήρας ομάδας, για παράδειγμα, στην αρχή ή στο τέλος (δηλαδή μετά το [ή πριν το ]).

Μπορείτε επίσης να δώσετε escape στην παύλα - τότε θα συμβολίζει τον εαυτό της ανεξάρτητα από τη θέση. Για παράδειγμα, αντί για [:-@] να γράψετε [:\-@] - και δεν θα υπάρχει πλέον ομάδα, αλλά θα υπάρχουν τρεις χαρακτήρες - άνω και κάτω τελεία, παύλα και at @.

Παράδειγμα

Στο επόμενο παράδειγμα το μοτίβο αναζήτησης είναι: ψηφίο 1, μετά γράμμα από 'a' έως 'z', μετά ψηφίο 2:

txt = '1a2 1-2 1c2 1z2' res = re.sub('1[a-z]2', '!', txt) print(res)

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

'! 1-2 ! !'

Παράδειγμα

Ας κάνουμε τώρα escape στην παύλα. Στο αποτέλεσμα το μοτίβο αναζήτησης είναι: ψηφίο 1, μετά γράμμα 'a', ή παύλα, ή γράμμα 'z', μετά ψηφίο 2:

txt = '1a2 1-2 1c2 1z2' res = re.sub('1[a\-z]2', '!', txt) print(res)

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

'! ! 1c2 !'

Παράδειγμα

Μπορείτε απλά να μετακινήσετε την παύλα, χωρίς να κάνετε escape σ' αυτήν:

txt = '1a2 1-2 1c2 1z2' res = re.sub('1[az-]2', '!', txt) print(res)

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

'! ! 1c2 !'

Παράδειγμα

Στο επόμενο παράδειγμα το μοτίβο αναζήτησης είναι: πρώτος χαρακτήρας - είναι μικρά γράμματα ή παύλα '-', μετά δύο γράμματα 'x':

txt = 'axx Axx -xx @xx' res = re.sub('[a-z-]xx', '!', txt) print(res)

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

'! Axx ! @xx'

Παράδειγμα

Στο επόμενο παράδειγμα το μοτίβο αναζήτησης είναι: πρώτος χαρακτήρας - είναι μικρά, κεφαλαία γράμματα ή παύλα '-', μετά δύο γράμματα 'x':

txt = 'axx Axx -xx @xx' res = re.sub('[a-zA-Z-]xx', '!', txt) print(res)

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

'! ! ! @xx'

Παράδειγμα

Μπορείτε να τοποθετήσετε την παύλα ανάμεσα σε δύο ομάδες - εκεί σίγουρα δεν θα δημιουργήσει μια ακόμη ομάδα:

txt = 'axx 9xx -xx @xx' res = re.sub('[a-z-0-9]xx', '!', txt) print(res)

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

'! ! ! @xx'

Πρακτικές Ασκήσεις

Δίνεται η ακόλουθη συμβολοσειρά:

txt = 'xaz xBz xcz x-z x@z'

Βρείτε όλες τις συμβολοσειρές σύμφωνα με το ακόλουθο μοτίβο: γράμμα 'x', κεφαλαίο ή μικρό γράμμα ή παύλα, γράμμα 'z'.

Δίνεται η ακόλουθη συμβολοσειρά:

txt = 'xaz x$z x-z xcz x+z x%z x*z'

Βρείτε όλες τις συμβολοσειρές σύμφωνα με το ακόλουθο μοτίβο: γράμμα 'x', μετά ή δολάριο, ή παύλα ή συν, μετά γράμμα 'z'.

Ελληνικά
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 για τη λειτουργία του ιστότοπου, την ανάλυση και την εξατομίκευση. Η επεξεργασία των δεδομένων γίνεται σύμφωνα με την Πολιτική Απορρήτου.
αποδοχή όλων ρύθμιση απόρριψη