perl.lt 
 
 Apie Straipsniai Funkcijos Parsisiųsti Nuorodos 
 
 Versija spausdinimui /Straipsniai/Įpraiškų santrauka/Atgal 
 
 

Pavadinimas

perlreref - Perlo įpraiškų žinynas


Aprašymas

Tai trumpas Perlo įpraiškų žinynas. Pilnos informacijos apie įpraiškas ieškokite perlre ir perlop dokumentacijos skyriuose, o taip pat šio žinyno tolimesnė informacija skyriuje.


Operatoriai

 =~ nustato kuriam kintamajam taikyti šabloną.
 Jei nenurodoma, naudoja $_
 $var =~ /foo/;
 m/įpraiška/igmsoxc ieško simbolių eilutėje įpraiškos atitikimo,
 su šiais galimais nustatymais:
 i  Nekreipiant dėmesio į didžiąsias/mažąsias raides
 g  Globalus - visi atitikimai
 m  Per kelias eilutes - ^ ir $ atitinka vidines eilutes
 s  Taikyti kaip vienai eilutei - . atitinka \n
 o  Kompiliuoja įpraišką tik vieną kartą
 x  Išplėstinės įpraiškos - galima naudoti tarpus ir komentarus
 c  Neatitaisyti pos kai įpraiška neatitinka eilutės naudojant /g
 Jei 'įpraiška' yra tuščia eilutė, vietoje jos naudojama paskutinė
 I<sėkmingai> atitikusi įpraiška. Galima naudoti ir kitokius skirtukus
 nei '/' tiek šitam operatoriui, tiek ir žemiau aprašytiesiems.
 qr/įpraiška/imsox leidžia išsaugoti įpraišką į kintamąjį ar perduoti į
 funkciją. Modifikatoriai saugomi kartu su įpraiška, kaip ir m// atveju.
 s/įpraiška/pakeitimas/igmsoxe pakeičia simbolių eilutėje atitikusias
 'įpraišką' dalis į 'pakeitimą'. Modifikatoriai tokie patys kaip ir
 m// atveju, tik su vienu papildymu:
 e  Įvykdyti 'pakeitimą' kaip Perlo kodą
 'e' gali būti nurodytas ir keletą kartų. 'pakeitimas' yra
 interpretuojamas kaip simbolių eilutė tarp dvigubų kabučių, nebent šio
 operatoriaus skirtukas yra vienguba kabutė (').
 ?įpraiška? lygiai taip pat kaip m/įpraiška/ tačiau atitinka tik vieną kartą.
 Negalima naudoti jokių kitų skirtukų. Turi būti atstatyta su 'reset'.

Sintaksė

 \       Išvengia tuoj po jo einančio simbolio meta-reikšmės
 .       Atitinka bet kurį vieną simbolį išskyrus naujos eilutės simbolį
 (nebent naudojamas /s modifikatorius)
 ^       Atitinka teksto pradžią (arba eilutės pradžią, jei naudojamas /m)
 $       Atitinka teksto pabaigą (arba eilutės pabaigą, jei naudojamas /m)
 *       Atitinka prieš tai einantį elementą 0 ar daugiau kartų
 +       Atitinka prieš tai einantį elementą 1 ar daugiau kartų
 ?       Atitinka prieš tai einantį elementą 0 ar 1 kartų
 {...}   Nurodo prieš tai einančio elemento pasikartojimų intervalą
 [...]   Atitinka kurį nors simbolį ir nurodytos aibės
 (...)   Sugrupuoja išraiškas ir priskiria jų rezultatus $1, $2...
 (?:...) Sugrupuoja išraiškas be rezultatų priskyrimo
 |       Atitinka išraišką iš dešinės ARBA iš kairės (alternatyva)
 \1, \2 ...  Tekstas iš N-tosios grupės

Specialiosios sekos

Šios sekos veikia taip kaip ir paprastose simbolių eilutėse:

 \a       Skambutis
 \e       Escape
 \f       Formfeed
 \n       Newline - nauja eilutė
 \r       Carriage return
 \t       Tab
 \038     Bet kuri aštuonetainė ASCII reikšmė
 \x7f     Bet kuri šešioliktainė ASCII reikšmė
 \x{263a} Plati šešioliktainė reikšmė
 \cx      Control-x
 \N{name} Vardinis simbolis
 \l  Mažosios raidės iki kito simbolio
 \u  Didžiosios raidės iki kito simbolio
 \L  Mažosios raidės iki \E
 \U  Didžiosios raidės iki \E
 \Q  Išjungia metasimbolius iki \E
 \E  Didžiųjų/mažųjų raidžių transformavimo pabaiga

Ši seka veikia skirtingai nei simbolių eilutėse:

 \b  Žodžio riba, o ne "backspace", išskyrus simbolių aibėse

Simbolių aibės

 [amy]    Atitinka 'a', 'm' ar 'y'
 [f-j]    Brūkšnelis nurodo "intervalą"
 [f-j-]   Brūkšnelis pačioje pradžioje ar pabaigoje reiškia brūkšnelį
 [^f-j]   Stogelio ženklas reiškia "atitinka viską kas NĖRA aibėje"

Šios sekos veikia tiek aibėse, tiek ir už jų:

 \d      Skaitmuo, tas pats kaip [0-9]
 \D      Ne skaitmuo, tas pats [^0-9]
 \w      Raidės arba skaičiaus simbolis, tas pats kaip [a-zA-Z_0-9]
 \W      Ne raidė ir ne skaičius, [^a-zA-Z_0-9]
 \s      "Baltas" simbolis, tas pats kaip [ \t\n\r\f]
 \S      "Nebaltas" simbolis, [^ \t\n\r\f]
 \C      Atitinka baitą (Unikode '.' atitinka simbolį)
 \pP     Atitinka P-vardo (Unikodinę) savybę
 \p{...} Atitinka Unikodo savybę ilgu pavadinimu
 \PP     Atitinka ne-P savybę
 \P{...} Atitinka ne-P unikodinę savybę ilgu pavadinimu
 \X      Atitinka išplėstinę Unikodinę seką

POSIX simbolių aibės bei jų Unikodiniai bei Perlo atitikmenys

 alnum   IsAlnum             Raidės ir skaičiai
 alpha   IsAlpha             Raidės
 ascii   IsASCII             Bet koks ASCII simbolis
 blank   IsSpace  [ \t]      horizontalūs "balti" simboliai (GNU)
 cntrl   IsCntrl             Konrolės simboliai
 digit   IsDigit  \d         Skaitmenys
 graph   IsGraph             Raidės, skaičiai ir skyryba
 lower   IsLower             Mažosios raidės (pagal lokalę)
 print   IsPrint             Raidės, skaičiai, skyryba, tarpų simboliai
 punct   IsPunct             Skyryba
 space   IsSpace  [\s\ck]    "Balti" simboliai
 IsSpacePerl   \s    "Balti" simboliai pagal Perlo apibrėžimą
 upper   IsUpper             Didžiosios raidės (pagal lokalę)
 word    IsWord   \w         Raidės, skaičiai ir _ (Perlas)
 xdigit  IsXDigit [\dA-Fa-f] Šešioliktainis skaitmuo

Simbolių aibėse:

 POSIX       tradicinis    Unikodas
 [:digit:]       \d        \p{IsDigit}
 [:^digit:]      \D        \P{IsDigit}

Inkarai

Visos šios sekos tik nurodo kurioje vietoje reikia taikyti šabloną.

 ^  Atitinka teksto pradžią (arba eilutės, jei naudojamas /m)
 $  Atitinka teksto pabaigą (arba eilutės, jei naudojamas /m) arba prieš naują eilutę
 \b Atitinka žodžio ribą (tarp \w ir \W)
 \B Atitinka ne žodžio ribą
 \A Atitinka teksto pradžią (nekreipia dėmesio į /m)
 \Z Atitinka teksto pabaigą (prieš pabaigą einančią nebūtiną \n)
 \z Atitinka absoliučią teksto pabaigą
 \G Atitinka tą vietą, kurioje darbą baigė paskutinis m//g
 \c Iš naujo nenustatinėja paieškos vietos kai naudojamas /g.
 Be \c, kiekvieną kartą pradedama ieškoti nuo pradžios

Kiekinės sekos

Kiekinės sekos automatiškai atitinka ilgiausią seką iš kairės.

 Maksimalu Minimalu Leidžiamas intervalas
 --------- -------- ---------------------
 {n,m}     {n,m}?  Turi būti ne mažiau kaip n kartų, bet ne daugiau nei m kartų
 {n,}      {n,}?   Turi būti bent n kartų
 {n}       {n}?    Turi būti lygiai n kartus
 *         *?      0 arba daugiau kartų (tas pats kaip {0,})
 +         +?      1 arba daugiau kartų (tas pats kaip {1,})
 ?         ??      0 arba 1 kartą (tas pats kaip {0,1})

Išplėstinės sekos

 (?#tekstas)        Komentaras
 (?imxs-imsx:...)   Įjungia/išjungia nustatymą (taip kaip ir m//)
 (?=...)            Nulinio ilgio teigiamas sprendinys už šios vietos
 (?!...)            Nulinio ilgio neigiamas sprendinys už šios vietos
 (?<...)            Nulinio ilgio teigiamas sprendinys prieš šią vietą
 (?<!...)           Nulinio ilgio neigiamas sprendinys prieš šią vietą
 (?>...)            Atitikti kiek galima daugiau nesaugant reikšmių kintamuosiuose
 (?{ kodas })       Įterptas kodas, grąžinta reikšmė tampa $^R
 (??{ kodas })      Dinaminė įpraiška, grąžinta reikšmė panaudojama kaip įpraiška
 (?(sąlyga)taip|ne) Sąlyga yra skaičius atitinkantis skliaustelius
 (?(sąlyga)taip)

Kintamieji

 $_    Kintamais pagal nutylėjimą, kurį naudoja operatoriai
 $*    Įjungia šablonų taikymą keletui eilučių (nenaudotinas; nebėra 5.8.1+ versijose)
 $&    Visa simbolių eilutė, kuri atitiko
 $`    Viskas iki atitikusio simbolių eilutės
 $'    Viskas po atitikusios simbolių eilutės

Šių trijų kintamųjų vartojimas sulėtins visas įpraiškas jūsų programoje. Pasiskaitykite perlvar dokumentaciją apie @LAST_MATCH_START masyvą bei ką daryti kad sulėtėjimo nebūtų. Taip pat žiūrėkite the Devel::SawAmpersand manpage modulio dokumentaciją.

 $1, $2 ...  saugo n-tąją išsaugotą seką
 $+    Paskutinė skliausteliuose išsaugota seka
 $^N   Holds the most recently closed capture
 $^R   Saugo (?{...}) išraiškos rezultatą
 @-    Saugo grupių pradžios vietas. $-[0] saugo viso atitikimo pradžią
 @+    Saugo grupių pabaigos vietas. $+[0] saugo viso atitikimo pabaigą

Grupės yra numeruojamos pagal atsidarančius skliaustelius.


Funkcijos

 lc          Pakeisti simbolių eilutę į mažąsias raides
 lcfirst     Pakeisti simbolių eilutės pirmą simbolį į mažąjį raidę
 uc          Pakeisti simbolių eilutę į didžiąsias raides
 ucfirst     Pakeisti simbolių eilutės pirmą simboliį į didžiąją raidę
 pos         Grąžinti arba nustatyti dabartinę įpraiškos atitikimo vietą
 quotemeta   Išvengti meta simbolių
 reset       Reset ?pattern? status
 study       Analyze string for optimizing matching
 split       Use regex to split a string into parts

Autorius

Iain Truskett.

Šis dokumentas platinamas tokiomis pat sąlygomis kaip ir pats Perlas.

Vertė: Petras Kudaras, 2003-2004


Tolimesnė informacija

perlretut - pamokos apie įpraiškas.
perlrequick - greitos pamokos apie įpraiškas.
perlre - detalesnei informacijai.
perlvar - detalesnei informacijai apie kintamuosius.
perlop - detalesnei informacijai apie operatorius.
perlfunc - detalesnei informacijai apie funkcijas.
perlfaq6 - dažnai užduodamiems klausimams apie įpraiškas.
re - modulio, kuris pakeičia įpraiškų veikimą ir padeda jas išriktinti, dokumentacija.
perldebug/``Įpraiškų išriktinimas''
perluniintro, perlunicode, charnames ir locale - detalesnei informacijai apie įpraiškas ir internacionalizaciją.
Mastering Regular Expressions, Jeffrey Friedl (http://regex.info/) geram įpraiškų supratimui.

Dėkui

David P.C. Wollmann, Richard Soderberg, Sean M. Burke, Tom Christiansen, Jim Cromie, ir Jeffrey Goff už naudingus patarimus.

 
 
 
2005.04.11 - 2012.02.06 © algirdas@perl.lt 
 Perl.lt programavimo savaitgaliai | Reklaminiai skydeliai | Perl.lt kodas