Wil je alle telefoonnummers uit een lap tekst halen onafhankelijk van het format van het nummer? Of het nou +31 6 12345678 of 0031612345678 of wat anders is? Regular Expressions (regex) in Python to the rescue! Volg onderstaande link om de code in de screenshot te kunnen kopieren.
import re
# VERBOSE mode om bij een regex per regel comments toe te kunnen voegen. Handig voor documentatie bij grotere regex.
re.compile(r''' # Drie quotes om ervoor te zorgen dat python de new lines in dit block code negeert.
(?:(?:\d\d\d\d)| # Landcode (non capturing group ?:), in het geval van NL 0031.
(?:\+31)) # Landcode (non capturing group ?:) met een escaped +. In het geval van NL +31.
(?:-?|\s) # Een dash OF spatie tussen de landcode en het nummer die 0 of 1 keer voor mag komen zodat telefoonnummers zonder dash ook meegenomen worden.
\d\s?\d\d\d\s?\d\s?\d\d\d\d # Het nummer. Er mag een spatie zitten na getal 1, 4 en 5 van de 9, maar dit hoeft niet (dus zowel 612345678 als 61234 5678 als 6 1234 5678 worden gevonden).
''', re.VERBOSE).findall('Kijk eens hier, een telefoonnumer: 0031-612345678. Hier is er nog een: +31-612345678. 0031612345678 en 0031 612345678, maar ook 0031 61234 5678 en 0031 6 1234 5678')