Introducere în expresiile regulate în Python
Expresiile regulate sunt comenzi pentru căutare și înlocuire complexă (sau pur și simplu căutare). Ele permit să faci lucruri foarte interesante, dar, din păcate, sunt destul de greu de învățat.
Pentru a începe să lucrăm cu expresii regulate
în Python, trebuie să importăm un modul special
re:
import re
Modulul re include metode
destinate lucrului cu expresii
regulate. O expresie regulată
reprezintă un set de comenzi și este formată
din două tipuri de caractere: cele care
se notează pe ele însele și din caractere-comandă,
care se numesc caractere speciale.
Familiarizarea cu expresiile regulate este mai bună
să înceapă cu exemplul metodei sub, care
este utilizată pentru înlocuiri în șir. Primul
parametru primește ce să înlocuiască,
al doilea - cu ce să înlocuiască. În al treilea parametru
specificăm șirul în care trebuie să facem
înlocuirea. În al patrulea parametru opțional
stabilim numărul de înlocuiri. Cea mai simplă
înlocuire cu ajutorul acestei metode va
arăta astfel:
res = re.sub('a', '!', 'bab')
print(res) # va afișa 'b!b'
După cum ați observat, în expresia regulată
literele se notează pe ele însele. Același lucru
este valabil și pentru cifre. Să înlocuim cifra
2 cu !:
res = re.sub('2', '!', '12abc3')
print(res) # va afișa '1!abc3'
Însă punctul este un caracter special
și notează orice caracter. În următorul
exemplu să găsim un subșir după următorul
șablon: litera 'x', apoi orice
caracter, apoi iar litera 'x':
res = re.sub('x.x', '!', 'xax eee')
print(res) # va afișa '! eee'
Este dat șirul:
txt = 'ahb acb aeb aeeb adcb axeb'
Scrieți o expresie regulată care va găsi șirurile
'ahb', 'acb', 'aeb'
după șablonul: litera 'a', orice
caracter, litera 'b'.
Este dat șirul:
txt = 'aba aca aea abba adca abea'
Scrieți o expresie regulată care va găsi șirurile
'abba', 'adca', 'abea'
după șablonul: litera 'a', 2
caractere oarecare, litera 'a'.
Este dat șirul:
txt = 'aba aca aea abba adca abea'
Scrieți o expresie regulată care va găsi șirurile
'abba' și 'abea', fără a captura
'adca'.