Regulaaravaldised

Videos kasutatud slaidid: https://pydoc.pages.taltech.ee/slides/regex/

Paljud erinevad ülesanded on seotud tekstist mingi seaduspärasusele vastava info leidmisega. Näiteks on ülesandeks leida ette antud tekstist kõik meiliaadressid. Regulaaravaldis on formaalne viis tekstis leiduva mustri kirja panemiseks. Mustriks võib näiteks meiliaadress või telefoninumber.

Pythonis on regulaaravaldistega töötamiseks tehtud moodul re.

Järgnevas näites otsime sõnest "an example word:cat!!!" üles alamsõne, mis vastab regulaaravaldisele word:\w\w\w. Regulaaravaldisele vastab täpne sõne "word:" ning sellele järgnevad 3 suvalist tähte.

Meetod re.search(pattern, text) tagastab otsingu õnnestumisel match objekti koos leitud alamsõnega vastasel juhul tagastatakse None.

import re text = 'an example word:cat!!' pattern = r'word:\w\w\w' match = re.search(pattern, text) # If-statement after search() tests if it succeeded if match: print('found', match.group()) ## 'found word:cat' else: print('did not find')

match = re.search(pattern, text) salvestab otsingu tulemuse muutujasse match. if match not None (ehk if match) kontrollib, kas otsing õnnestus. match.group() tagastab leitud teksti ("word:cat").

r"string" on "raw" tüüpi string, mis tähendab, et kurakaldkriipsud("\") jäetakse teksti alles. Nii on mugavam regulaaravaldisi kirja panna, kuna regulaaravaldistes kasutatakse mustrite kirjapanemiseks kurakaldkriipse.

Näide:

raw string

r'word:\w\w\w'

regular string

'word:\\w\\w\\w'