Regulaaravaldis: Difference between revisions

From ICO wiki
Jump to navigationJump to search
Ckallas (talk | contribs)
Ckallas (talk | contribs)
Line 30: Line 30:
<pre>{5, }</pre>
<pre>{5, }</pre>
'''Tulemus:''' Vähemalt 5 esinemist, maksimum puudub.   
'''Tulemus:''' Vähemalt 5 esinemist, maksimum puudub.   
Lisaks saab kasutada mõningaid lühendeid:
'''* (tärn)''' sama, mis {0,}, leiab suvalise arvu esnemisi.
'''+ (plussmärk)''' sama, mis {1,}, vähemalt 1 esinemine.
'''? (küsimärk)''' sama, mis {0,1}, null või 1 esinemine.


'''Tagasiviited'''
'''Tagasiviited'''

Revision as of 19:54, 26 November 2011

Autor: Carolys Kallas A22 2011

Regulaaravaldised on teksti otsimiseks ja asendamiseks ettenähtud keel. Kõige lihtsam regulaaravaldis on suvaline sõna. Regulaaravaldise otsing on alati alamstringi otsing. [4]

Arvutiga töötamises regulaaravaldis pakub lühikese ja paindliku vahendi tekstistringide (nagu kindlad märgid, sõnad, märgimustrid) kokkusobitamiseks. Regulaaravaldise lühendite seas on regex ja regexp.[3] UNIXis on olemas regulaaravaldiste mõiste, mis laseb malli kasutada hoopis laiemalt kui failinimedes. Regulaaravaldisi tunnistavad üpris mitmed UNIXi utiliidid, sed, grep ja awk on ehk kõige tüüpilisemad näited.[1]

Regulaaravaldis Unixis

UNIXis kasutatav käsk grep on kõige lihtsam vahend regulaaravaldiste kasutamiseks. Grep võimaldab moodustada lihtsaid regulaaravaldisi ning otsida mustrile vastavaid sõnu etteantud failide hulgast. Grep on n.ö sissejuhatus Awk, Sedi ja Perli edasiõppimisel.

UNIXi tekstitoimetis ed saab kasutada konstruktsiooni g/re/p, mis globaalselt (g) otsib üle kogu teksti regulaaravaldisega (re, regular expression) sobivaid sõnu ning väljastab (p, print) read, mis sisaldavad leitud sõna. Seda konstruktsiooni läks vaja nii tihti, et tehtigi sellele omaette käsk UNIXis, nimega grep.[5]

Neli moodsas regulaaravaldises kasutatavat põhimõtet

Mustrid

Mustrid koosnevad literaalsetest stringidest ja märgiklassides. Mustrid võivad sisaldada alammustreid, mis kujutavad endast sulgudes antud mustrit. [6]


Eeldused


Kvantorid Kvantorid lasevad regulaaravaldisel leida määratud arvu või arvuvahemiku märke, märgiklasse või alammustreid. Kvantorid antakse looksulgudes ({ ja }) ning nad esinevad üldistatult kujul {[minimaalselt-esinemisi][,[maksimaalselt-esinemisi]]}

{1}

Tulemus: Täpselt 1 esinemine.

{5,10}

Tulemus: Vähemalt 5, aga maksimaalselt 10 esinemist.

{5, }

Tulemus: Vähemalt 5 esinemist, maksimum puudub.

Lisaks saab kasutada mõningaid lühendeid:

* (tärn) sama, mis {0,}, leiab suvalise arvu esnemisi.

+ (plussmärk) sama, mis {1,}, vähemalt 1 esinemine.

? (küsimärk) sama, mis {0,1}, null või 1 esinemine.


Tagasiviited


Näide

^[ \t]{0,4}(Henrik|Pernilla) ütle(s|b)

Avaldist alustav katus (^) on eeldus, olles õige ainult juhul, kui järgnev string asub tõesti rea alguses.

Stringid [ \t] ja (Henrik|Pernilla) ütle(s|b) on mustrid. Esimene on märgiklass, millele vastab kas tühik või (horisontaalne) tabeldusmärk, teine muster sisaldab kõigepealt alammustrit, millele vastab kas Henrik või Pernilla, seejärel osa, millele vastab täpselt string ütle, ning lõpuks alammustrit, millele vastab kas s või b.

String {0,4} on kvantor, mis annab teada “kuskil 0 kuni 4 kaugusel eelmisest”.

Et regulaaravaldise rakendus, mis toetab tagasiviiteid, salvestab kogu stringi sobiva osa, samuti sulgudesse võetud alammustrid, võime nii kogu sobivust (regulaaravaldise otsingul redaktoris avatud tekstidokumendis märgitakse see enamasti valituks) või leitud nime või tegusõna viimase osa, mille kohta viited käivad, uuesti tarvitada. [6]

Kasutatud kirjandus

1. UNIX juhend - Regulaaravaldised http://www.eenet.ee/EENet/assets/docs/abs/mall.html#regexp

2. Kuutõrvaja http://kuutorvaja.eenet.ee/programmeerimine/regulaaravaldised.html

3. Regular expression http://en.wikipedia.org/wiki/Regular_expression

4. Antti Andreimann - Linuxi administreerimine edasijõudnutele http://enos.itcollege.ee/~aandreim/linux/2006_advanced/Loeng_3_Regulaaravaldised.odp.

5. Regulaaravaldiste kasutamine - http://www.quretec.com/u/vilo/edu/2003-04/ATABI_2004k/Languages/Regexpv2.html#_Toc2487298

6. Regulaaravaldised - http://docs.kde.org/development/et/kdesdk/kate/regular-expressions.html