Päringuabi
«Täpitähed» (Õ,Õ,Ä,ä,Ö,ö,Ü,ü) ja «susisevad» (Š,š,Ž,ž) tuleb anda olemitena ehk entiteetidena:
- Š = Š
- š = š
- Ž = Ž
- ž = ž
- Õ = Õ
- õ = õ
- Ä = Ä
- ä = ä
- Ö = Ö
- ö = ö
- Ü = Ü
- ü = ü
Regulaaravaldiste abil on võimalik pärida mitut märki korraga. Järgmistel märkidel on eritähendus:
- . (punkt)
- tähistab mistahes sümbolit, kui see ei juhtu olema entiteediga tähistatu, sest need moodustatakse mitmest sümbolist.
uu.
'uus', 'uue', 'uut', 'uul', 'uuu', 'uu!', 'uu ' jne
.uu
'suu', 'Suu', 'nuu', 'uuu', '-uu', ' uu', '7uu' jne
p.ike
'paike'
- * (tärn)
- Eelnev sümbol kordub null või enam korda.
aa*
'a', 'aa', 'aaa', 'aaaaaaa'
uu*s
'us', 'uus', 'uuus', 'uuuuuuuuus'
- + (pluss)
- Eelnev sümbol kordub üks või enam korda.
- ? (küsimärk)
- Eelnev sümbol kordub null või üks korda.
- *?, +?, ??
- Päringud "*", "+", ja "?" vaikimisi kõik
«ahned»; nad otsivad nii pikka tekstiosa, kui vähegi
vÕimalik. See pole alati soovitav. "?" lisamine peale hulga
näitajat sunnib seda «viisakaks», päring hõlmab nii
vähe kui võimalik.
- {m}
- Otsitakse täpselt
m korda järjest esinevat märki. Näiteks ma{3}lused
leiab maaalused, kuid mitte maalused ega ka mitte malused.
- {m,n}
- Otsitakse m kuni n
korda järjest esinevat märki. Kui
m ära jätta, siis on alumiseks rajaks null, kui
n ära jätta, on ülemiseks rajaks lõpmatus. Koma ei
tohi ära jätta, muidu tõlgendatakse seda eelpoolkirjeldatud
erimärgina.
- {m,n}?
- Otsitakse m
kuni n korda järjest esinevat märki, leitakse lühim
võimalik vaste. Kui m ära jätta, siis on alumiseks
rajaks null, kui n ära jätta, on ülemiseks rajaks
lõpmatus. Koma ei tohi ära jätta, muidu tõlgendatakse seda
eelpoolkirjeldatud erimärgina. See on eelpooltoodud erimärgi
«viisakas» versioon.
- \ (vastukaigas)
- See märk omab kahte tähendust: ta kas võimaldab otsida
erimärki (näiteks *, +, või ?; või siis annab teada komplekskäsu
algusest. Komplekskäske käsitletakse allpool.
- []
(kandilised sulud)
- Kasutatakse märkide valiku
näitamiseks. Kandiliste sulgude vahele võib panna märke terve
rida, või siis tühistada vahemik. Vahemikus on märgid eraldatud
sidekriipsuga ("-"). Nii leiab näiteks kõik numbrid
[0-9]. Kandiliste sulgude sees on erimärgid tavalises
tähenduses. Nii leiab [akm$] kas "a", "k", "m", või "$"; [a-z]
leiab suvalise väiketähe ja [a-zA-Z0-9] iga tähe või numbri -
eeldusel, et tegemist ei ole «täpitähe»
(Õ,õ,Ä,ä,Ö,ö,Ü,ü) ja «susisevaga». Ka kompleksseid
märke, nagu \w ja \S (neist tuleb juttu allpool) võib kasutada
kandiliste sulgude vahel. Kui nurksulgude vahel on vaja kasutada
sidekriipsu või lõpetavat nurksulgu, siis tuleb see panna
esimeseks märgiks sulgude sees, või peab talle eelnema
vastukaigas. Nii leiab []] näiteks lõpetava nurksulu.
Nurksulgudes on võimalik päringut ka eitada. Selleks tuleb "^" panna
esimeseks märgiks sulgude sisse. (Kui "^" ei ole esimene märk, siis
kasutatakse teda nagu iga teist.) Nii näiteks leiab A[^5] A4, A3, A2,
A1, Aa, kuid mitte A5. [^^] leiab kõik peale "^".
- "|"
- A|B leiab A või B, kus A ja B on suvalised regulaaravaldised. Sel
viisil on võimalik leida suvalist hulka regulaaravaldiste
vasteid. Algoritm töötab vasakult paremale. Kui leitakse avaldisele A
vastav tekstiosa, siis B-d enam ei proovita, isegi kui see oleks
pikem. Et leida püstkriipsu, peab sellele eelnema vastukaigas ("\|")
või peab ta olema nurksulgude vahel ("[|]").
- (...)
- Tavaliste sulgude sisse käib suvaline
regulaaravaldis. Sulud tähendavad seda, et moodustub grupp,
millele on hiljem võimalik viidata vastukaikale järgneva
numbriga - \number. Et leida sulgusid, on vaja
neile ette panna vastukaigas või panna nad omakorda
nurksulgudesse.
- (?...)
- Avavale sulule järgnev
küsimärk tähistab komplekspäringu algust. (Lihtsalt avavale
sulule järgneval küsimärgil ei ole eritähendust.) "?"-le järgnev
märk näitab, millise komplekspäringuga on tegemist. Sellised
avaldised ei moodusta gruppi, kuid (?P<nimi>...) on siin
erandiks. Järgnevad komplekspäringute kirjeldused.
- (?:...)
- Sulgudega piiratud regulaaravaldis, mida ei loeta
grupiks. Leiab sulgude sees oleva regulaaravaldise, kuid
sellele pole hiljem võimalik viidata.
- (?P<nimi>...)
- Nagu tavalised sulud, kuid grupile on võimalik anda
nime. Grupi nimi peab vastama Pythoni nimereeglitele ja ühe
päringu sees ei tohi nimed korduda. Nimelist gruppi saab välja
kutsuda ka numbri järgi.
- (?P=nimi)
- Leiab nimelise grupi.
- (?#...)
- Kommentaar. Sulgude sisu ignoreeritakse.
- (?=...)
- Leiab avaldise, millele järgneb ... kirjutatud avaldis, kuid
ei loe seda avaldise sisse.
Isaac (?=Asimov) leiab 'Isaac ' ainult siis, kui sellele
järgneb 'Asimov'.
- (?!...)
- Leiab avaldise, millele ei järgne ... . Isaac (?=Asimov) leiab 'Isaac ' ainult siis, kui sellele
ei järgne 'Asimov'.
- (?<=...)
- Leiab avaldise, millele eelneb ... . Avaldis tohib olla
ainult kindlaksmääratud pikkusega, näiteks a|b või abc, kuid
mitte a* ega a{3,4}
- (?<!...)
- Leiab avaldise, millele ei eelne ... . Ka sel juhul tohib
avaldis olla vaid kindlaksmääratud pikkusega.
- komplekssed märgid
- koosnevad vastukaikast ("\") ja ühest alltoodud
märkidest. Kui vastukaika järel ei ole üht allpooltoodud
märkidest, siis otsitakse vastukaikale järgnevat märki
ennast. Nii näiteks leitakse \$ vasteks dollarimärk "$".
- \ühe- või kahekohaline arv
- Leiab arvule vastava grupi (võimaldab leida näiteks
kordusi). Nurksulgude sees tõlgendatakse sellist
konstruktsiooni märkidena.
- \A
- Leiab stringi alguse (sama mis "^")
- \b
- Leiab sõna alguse ja lõpu. Sõna defineeritakse kui
tähtede-numbrite ja allkriipsude jada, nii et sõna lõppu
tähistab tühik või märk, mis ei kuulu tähtede, numbrite ega
allkriipsu hulka. Kuna täpitähed ja susisevad sisaldavad
ampersandi (&) ja semikoolonit (;), siis ei kuulu nad
selle definitsiooni
kohaselt sõna hulka, nagu ka sidekriips. Nurksulgude vahel
tähistab \b tagasiaste (backspace) klahvi.
- \B
- Leiab tähistringi sõna seest, kus ei ole algust ega
lõppu. \b vastand.
- \d
- Leiab iga numbri. Samaväärne väljendiga [0-9]
- \D
- Leiab iga mittenumbri. Samaväärne väljendiga [^0-9].
- \s
- Leiab iga «valge vahe». Samaväärne väljendiga [ \t\n\r\f\v].
- \S
- Leiab iga mitte-«valge vahe». Samaväärne väljendiga [^ \t\n\r\f\v].
- \w
- Leiab iga tähe, numbri või allkriipsu. Samaväärne väljendiga
[a-zA-Z0-9_]
- \W
- Leiab iga mitte-tähe, -numbri või -allkriipsu. Samaväärne väljendiga
[^a-zA-Z0-9_]
- \Z
- Leiab stringi lõpu. Samaväärne "$"-ga.
- muud eritähendusega märgid
-
\a \b \f \n
\r \t \v \x
\\
- ^ (katus)
- Rea algus. NB! See sümbol ei oma
käesolevas päringus erilist mõtet, sest iga rida algab alati
alakorpuse- ja failimärgendiga.
- $ (dollar)
- Rea lõpp.
Päringunäiteid
- (\b[^ ]+ )\1
- Otsib kordust. Leiab märgijärjendid, mis
korduvad, alates mittetühikust, mis on sõna alguses.
Näiteks
AJAE1980\tat0517 Gorbi, Gorbi, skandeerib kirikuplats.
AJA1990\ap0310 Piim , I 0,24 0,25 0,25
aga ka
AJAE1980\tat0972 Ka Krimmi sõja ja Sevastoopoli kangelasliku kaitsmise (1855 -1856) ajal anti hulgaliselt kuldrelvi.
Viimases näites algab esimene 'ja' sõna seest, sest algfailis
on õ asemel õ, kuid sõna hulka arvestatakse ainult suur- ja väiketähed, numbrid ning allkriipsud.
- (\b[^ ]+ )(?:\1)+
- Otsib sellist kordust, mida on vähemalt üks. Algus on nagu
eelmisel näitel, kuid \1 on pandud mittenummerdatud
grupeerivatesse sulgudesse ja lisatud "+", mis eelnevat
avaldist lubab otsida vähemalt üks kord.
AJAE1990\stak0140 Rõõm! Rõõm! Rõõm!
- (&[aou]uml;|õ|(?<!&)[aeiou])\1
- Otsib kahte ühesugust järgnevat täishäälikut. Kui poleks
vaja arvestada ka täpitähti, siis piisaks päringust
"([aeiou])\1". Eriti keeruliseks teeb selle päringu asjaolu,
et õ-d tähistavas olemis (ü) on kõrvuti kaks
u-d. Selle vastu aitab ainult märgi & keelamine enne
päritavat ilma täppideta täishäälikut.
Veebisepp Viimati muudetud: N, 03. jaanuar 2019 17:14 UTC.