Πολυγραμμικότητα στις κανονικές εκφράσεις της Python
Οι κανονικές εκφράσεις όταν δουλεύουν με πολυγραμμικές συμβολοσειρές έχουν τις ιδιαιτερότητές τους. Ας τις μελετήσουμε με το παράδειγμα της ακόλουθης συμβολοσειράς, που περιέχει συνηθισμένους χαρακτήρες, χαρακτήρες αλλαγής γραμμής και ταμπουλάρισματος:
txt = '''111
222
333
444'''
Αλλαγή γραμμής
Οι χαρακτήρες αλλαγής γραμμής μπορούν να πιαστούν
με την εντολή '\n':
res = re.sub('\n', '!', txt)
print(res)
Σαν αποτέλεσμα θα εκτυπωθεί η ακόλουθη συμβολοσειρά (τα κενά μεταξύ των γραμμών είναι ταμπουλάρισμα):
'111! 222! 333! 444'
Ταμπουλάρισμα
Οι χαρακτήρες ταμπουλαρίσματος μπορούν να πιαστούν με την
εντολή '\t':
res = re.sub('\t', '!', txt)
print(res)
Αποτέλεσμα εκτέλεσης του κώδικα:
'''
!111
!222
!333
!444
'''
Λειτουργία της τελείας
Η εντολή '.' για πολυγραμμική συμβολοσειρά
δεν πιάνει τους χαρακτήρες αλλαγής γραμμής:
res = re.sub('.', '!', txt)
print(res)
Αποτέλεσμα εκτέλεσης του κώδικα:
'''
!!!
!!!!
!!!!
!!!!
'''
Οποιοσδήποτε χαρακτήρας
Για να πιάσουμε όλους τους χαρακτήρες σε μια πολυγραμμική
συμβολοσειρά, χρησιμοποιείται μια έξυπνη τεχνική με τη μορφή
του συνδυασμού [\s\S]. Αυτή η κατασκευή
θα βρει όλους τους συνηθισμένους χαρακτήρες και όλες τις αλλαγές
γραμμής:
res = re.sub('[\s\S]', '!', txt)
print(res)
Αποτέλεσμα εκτέλεσης του κώδικα:
'!!!!!!!!!!!!!!!!!!'
Δολάριο
Η εντολή '$' σε πολυγραμμική λειτουργία
θα πιάνει το τέλος κάθε γραμμής:
res = re.sub('$', '!', txt)
print(res)
Αποτέλεσμα εκτέλεσης του κώδικα:
'''
111!
222!
333!
444!
'''
Πρακτικές ασκήσεις
Δίνεται η συμβολοσειρά:
'''
abc
def
ghi
jkl
'''
Γράψτε μια κανονική έκφραση που θα μετατρέψει αυτήν τη συμβολοσειρά στην ακόλουθη:
'''
abc!
def!
ghi!
jkl!
'''
Δίνεται η συμβολοσειρά:
'''
abc
def
ghi
jkl
'''
Γράψτε μια κανονική έκφραση που θα μετατρέψει αυτήν τη συμβολοσειρά στην ακόλουθη:
'''
! abc
! def
! ghi
! jkl
'''
Δίνεται η συμβολοσειρά:
'''
abc
def
ghi
jkl
'''
Γράψτε μια κανονική έκφραση που θα μετατρέψει αυτήν τη συμβολοσειρά στην ακόλουθη:
'''!
abc
def
ghi
jkl
!'''
Δίνεται η συμβολοσειρά:
'''
abc
def
ghi
jkl
'''
Γράψτε μια κανονική έκφραση που θα μετατρέψει αυτήν τη συμβολοσειρά στην ακόλουθη:
'''!
! abc
! def
! ghi
! jkl
!'''
Δίνεται η συμβολοσειρά:
'''
abc
def
ghi
jkl
'''
Γράψτε μια κανονική έκφραση που θα μετατρέψει αυτήν τη συμβολοσειρά στην ακόλουθη:
'''!
abc!
def!
ghi!
jkl!
!'''
Δίνεται η συμβολοσειρά:
'''
abc
def
ghi
jkl
'''
Γράψτε μια κανονική έκφραση που θα μετατρέψει αυτήν τη συμβολοσειρά στην ακόλουθη:
'''
!abc
!def
!ghi
!jkl
'''