Regulaaravaldiste sissejuhatus Pythonis
Regulaaravaldised on käsid keerukaks otsimiseks ja asendamiseks (või lihtsalt otsimiseks). Need võimaldavad teha väga huvitavaid asju, kuid kahjuks on need üsna raskesti omandatavad.
Regulaaravaldistega töötamise alustamiseks Pythonis peame importima spetsiaalse mooduli re:
import re
Moodul re sisaldab meetodeid, mis on mõeldud regulaaravaldistega töötamiseks. Regulaaravaldis on käsikogum ja koosneb kaht tüüpi sümbolitest: nendest, mis tähistavad iseennast, ja käsusümbolitest, mida nimetatakse spetsiaalseteks sümboliteks.
Regulaaravaldistega tutvumist on parem alustada meetodi sub näitel, mida kasutatakse stringis asenduste tegemiseks. Esimese parameetrina võtab meetodi selle, mida asendada, teise parameetrina selle, millega asendada. Kolmandas parameetris määrame stringi, milles asendus teha. Neljandas valikulises parameetris määrame asenduste arvu. Kõige lihtsam asendus selle meetodi abil näeb välja järgmine:
res = re.sub('a', '!', 'bab')
print(res) # väljastab 'b!b'
Nagu märkasite, tähistavad regulaaravaldises tähed iseennast. Sama kehtib ka numbrite kohta. Asendame numbri 2 sümboliga !:
res = re.sub('2', '!', '12abc3')
print(res) # väljastab '1!abc3'
Kuid punkt on spetsiaalne sümbol ja tähistab suvalist sümbolit. Järgmises näites otsime üles alamstringi järgmise mustri järgi: täht 'x', siis suvaline sümbol, siis jälle täht 'x':
res = re.sub('x.x', '!', 'xax eee')
print(res) # väljastab '! eee'
Antud on string:
txt = 'ahb acb aeb aeeb adcb axeb'
Kirjutage regulaaravaldis, mis leiab stringid 'ahb', 'acb', 'aeb' mustri järgi: täht 'a', suvaline sümbol, täht 'b'.
Antud on string:
txt = 'aba aca aea abba adca abea'
Kirjutage regulaaravaldis, mis leiab stringid 'abba', 'adca', 'abea' mustri järgi: täht 'a', 2 suvalist sümbolit, täht 'a'.
Antud on string:
txt = 'aba aca aea abba adca abea'
Kirjutage regulaaravaldis, mis leiab stringid 'abba' ja 'abea', kuid ei haara 'adca'.