English

Päringuabi

Täpitähed ja susisevad

«Täpitähed» (Õ,Õ,Ä,ä,Ö,ö,Ü,ü) ja «susisevad» (Š,š,Ž,ž) tuleb anda olemitena ehk entiteetidena:

Regulaaravaldised

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 &otilde;, 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;|&otilde;|(?<!&)[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 (&uuml;) on kõrvuti kaks u-d. Selle vastu aitab ainult märgi & keelamine enne päritavat ilma täppideta täishäälikut.


Valid XHTML 1.0! Valid CSS! Veebisepp   Viimati muudetud: N, 03. jaanuar 2019 17:14 UTC.