Oefenen met reguliere expressies: re.split() en re.findall()
Nu ga je zelf enkele reguliere expressies schrijven om cijfers, strings en niet-alfanumerieke tekens te matchen. Bekijk eerst my_string door het in de IPython Shell te printen, zodat je kunt bepalen hoe je de verschillende stappen het beste matcht.
Let op: het is belangrijk om je regex-patronen te prefixen met r, zodat ze precies zo geïnterpreteerd worden als jij wilt. Anders kun je problemen krijgen met escape-sequenties in strings. In Python staat "\n" bijvoorbeeld voor een nieuwe regel, maar met de r-prefix wordt het geïnterpreteerd als de ruwe string "\n" — dus het teken "\" gevolgd door het teken "n" — en niet als een nieuwe regel.
De module voor reguliere expressies, re, is al voor je geïmporteerd.
Onthoud uit de video dat de syntaxis voor de regex-bibliotheek is dat je altijd eerst het patroon en daarna de string meegeeft.
Deze oefening maakt deel uit van de cursus
Introductie tot Natural Language Processing in Python
Oefeninstructies
- Splits
my_stringop elk einde van een zin. Doe dit als volgt:- Schrijf een patroon
sentence_endingsom zinsafsluitingen te matchen (.?!). - Gebruik
re.split()ommy_stringop het patroon te splitsen en print het resultaat.
- Schrijf een patroon
- Zoek en print alle woorden met een hoofdletter in
my_stringdoor een patrooncapitalized_wordste schrijven enre.findall()te gebruiken.- Weet je nog het
[a-z]-patroon uit de video om groepen kleine letters te matchen? Pas dat patroon aan om groepen hoofdletters te matchen.
- Weet je nog het
- Schrijf een patroon
spacesom één of meer spaties te matchen ("\s+") en gebruik vervolgensre.split()ommy_stringop dit patroon te splitsen, met behoud van alle interpunctie. Print het resultaat. - Vind alle cijfers in
my_stringdoor een patroondigits("\d+") te schrijven enre.findall()te gebruiken. Print het resultaat.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# Write a pattern to match sentence endings: sentence_endings
sentence_endings = r"[___]"
# Split my_string on sentence endings and print the result
print(re.____(____, ____))
# Find all capitalized words in my_string and print the result
capitalized_words = r"[___]\w+"
print(re.____(____, ____))
# Split my_string on spaces and print the result
spaces = r"___"
print(re.____(____, ____))
# Find all digits in my_string and print the result
digits = r"___"
print(re.____(____, ____))