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:

pythonimport 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:

pythonres = 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 !:

pythonres = 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':

pythonres = re.sub('x.x', '!', 'xax eee')
print(res) # väljastab '! eee'
Задание 1

Antud on string:

pythontxt = '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'.

Задание 2

Antud on string:

pythontxt = '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'.

Задание 3

Antud on string:

pythontxt = 'aba aca aea abba adca abea'

Kirjutage regulaaravaldis, mis leiab stringid 'abba' ja 'abea', kuid ei haara 'adca'.