Introductie tot reguliere expressies in Python
Reguliere expressies zijn commando's voor complex zoeken en vervangen (of gewoon zoeken). Ze maken heel interessante dingen mogelijk, maar zijn helaas nogal moeilijk onder de knie te krijgen.
Om te beginnen met reguliere expressies
in Python, moeten we een speciale module
re importeren:
import re
De module re bevat methodes
bedoeld voor het werken met reguliere
expressies. Een reguliere expressie
is een reeks commando's en bestaat
uit twee soorten symbolen: degenen die
zichzelf vertegenwoordigen en de commando-symbolen,
die speciale tekens worden genoemd.
Kennis maken met reguliere expressies kan
het beste aan de hand van de methode sub, die
wordt gebruikt voor vervangingen in een string. De eerste
parameter van de methode is wat vervangen moet worden,
de tweede - door wat. In de derde parameter
geven we de string op waarin de vervanging
moet plaatsvinden. In de vierde optionele parameter
stellen we het aantal vervangingen in. De eenvoudigste
vervanging met deze methode ziet
er zo uit:
res = re.sub('a', '!', 'bab')
print(res) # geeft 'b!b' weer
Zoals je hebt gemerkt, staan letters in een reguliere expressie
voor zichzelf. Hetzelfde
geldt voor cijfers. Laten we het cijfer
2 vervangen door !:
res = re.sub('2', '!', '12abc3')
print(res) # geeft '1!abc3' weer
Maar een punt is een speciaal teken
en staat voor elk willekeurig teken. In het volgende
voorbeeld gaan we een substring zoeken volgens dit
patroon: letter 'x', dan een willekeurig
teken, dan weer letter 'x':
res = re.sub('x.x', '!', 'xax eee')
print(res) # geeft '! eee' weer
Gegeven een string:
txt = 'ahb acb aeb aeeb adcb axeb'
Schrijf een reguliere expressie die de strings
'ahb', 'acb', 'aeb'
vindt volgens het patroon: letter 'a', een willekeurig
teken, letter 'b'.
Gegeven een string:
txt = 'aba aca aea abba adca abea'
Schrijf een reguliere expressie die de strings
'abba', 'adca', 'abea'
vindt volgens het patroon: letter 'a', 2
willekeurige tekens, letter 'a'.
Gegeven een string:
txt = 'aba aca aea abba adca abea'
Schrijf een reguliere expressie die de strings
'abba' en 'abea' vindt, zonder
'adca' te vangen.