Αντιστροφή συνόλων χαρακτήρων σε regex

Χρησιμοποιώντας το καρέτ '^' στην αρχή των αγκύλων μπορούμε να αντιστρέψουμε τον επιθυμητό στόχο. Αν, για παράδειγμα, η εντολή [ab] αναζητά το γράμμα 'a' ή 'b', τότε η εντολή [^ab] θα αναζητά όλους τους χαρακτήρες, εκτός από 'a' και 'b'.

Παράδειγμα

Σε αυτό το παράδειγμα, το μοτίβο αναζήτησης είναι ως εξής: γράμμα 'x', μετά ΟΧΙ γράμμα 'a', όχι 'b' και όχι 'c', μετά γράμμα 'z':

pythontxt = 'xaz xbz xcz xez'
res = re.sub('x[^abc]z', '!', txt)

print(res)

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

python'xax xbx xcx !'

Παράδειγμα

Σε αυτό το παράδειγμα, το μοτίβο αναζήτησης είναι ως εξής: γράμμα 'x', μετά ΟΧΙ πεζό λατινικό γράμμα, μετά γράμμα 'z':

pythontxt = 'xaz xbz x1z xCz'
res = re.sub('x[^a-z]z', '!', txt)

print(res)

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

python'xaz xbz ! !'

Πρακτικά προβλήματα

Задание 1

Γράψτε μια κανονική έκφραση που θα βρει strings σύμφωνα με το μοτίβο: ψηφίο 1, μετά χαρακτήρας όχι 'e' και όχι 'x', ψηφίο 2.

Задание 2

Γράψτε μια κανονική έκφραση που θα βρει strings σύμφωνα με το μοτίβο: γράμμα 'x', μετά ΟΧΙ ψηφίο από 2 έως 7, γράμμα 'z'.

Задание 3

Γράψτε μια κανονική έκφραση που θα βρει strings σύμφωνα με το μοτίβο: γράμμα 'x', μετά ΟΧΙ κεφαλαίο λατινικό γράμμα από 1 και περισσότερες φορές, γράμμα 'z'.

Задание 4

Γράψτε μια κανονική έκφραση που θα βρει strings σύμφωνα με το μοτίβο: γράμμα 'x', μετά ΟΧΙ κεφαλαίο ή πεζό λατινικό γράμμα και όχι ψηφίο από 1 έως 5 από 1 και περισσότερες φορές, γράμμα 'z'.