NeWorld

Regular expressions (1 dalis)

by neworld on Rgp.12, 2007, under Programavimas

Kas yra regular expressions?

Regular expressions yra simbolių rinkinys leidžiantis gramatiškai aprašyti arba redaguoti tekstą (tikiuosi gerai išsireiškiau :) )

Nekalbėsiu apie tai iš kur atsirado, kam konkrečiai naudoti, tik paminėsiu jog su šituo dalykų galima labai paprastai redaguoti tekstus, taigi sutaupysime laiko ir kodo.

Mažiau kalbų, daugiau darbų, lets start

pats parasčiausiais pavizdys

eiti

Taigi visoje eilutėje šis paternas ras visus “eiti”. Tarkim turim eilutę: “Ryte mes turime eiti į mokyklą”, tai pagal šį paterną atitinką tik “eiti”. O jei turime “Eiti iš proto”, tada šis paternas netinka niekur, kadangi paternuose yra skiriamos didžiosios ir mažosios raidės.

Eiluės simboliai ^ ur $

Šitie simboliai apibrėžia teksto pradžią ir pabaigą. Simbolis ^ pradžia, o simbolis $ pabaigą. Jie naudojami norint padaryti tam tikrą pabaigą ir/ar pradžią. Tarkim turime paterną

eiti

taigi, jei ieškosime pagal šį paterną žodyje “įeiti” rasime reiškmę eiti. Tačiau jeigu mes nenorime leisti dėti priešdėlių šiame žodyje, tai mums reikia naudoti:

^eiti

Taigi dabar žodyje “įeiti” nerasmine nieko kas tenkins šį paterną. Panašiai ir su $, tik jis naudojamas aptikti eilutės pabaigą.

Simbolių klasė: []

Simbolių klasė leidžia nurodyti kelis galimus simbolius. Sakymim paternas:

eisi[mt]e

atitiks ir eisime ir eisite. Kaip matome galimus simbolius reikia surašyti be tarpų ir kitokių skiriamųjų ženklų tarp [ ir ]. Tačiau sakykim mes norime iš teksto paimti tik vienaženklį skaičių. taigime galime pasirašyti “[1234567890]” paterną.

ženklas ^ nurodo kokie simboliai negalimi paterne. Tad paternas “[^ąčęėįšųūĄČĘĖĮŠŲŪ]” netiks lietuviškom raidėm

“-” (brūkšnys ir “.” (taškas)

Simbolių intervalus galime parašyti tarp “-” (brūkšnio). Taigi paternas “[0-9a-fA-F]” leis apibrėžti visus šešioliktainius skaičius. (be brūkšnio tektų rašyti [0123456789abcdefABCDEF])

Jeigu norime į galimų simbolių skaičių įtraukti “-” tada mes jį turime rašyti klasės pabaigoje arba pradžioje “[-0-9]”

Taškas leidžia apibėžti bet kokį ženklą. Paternas “.r” tik ir žodžiui “ir” ir “ar”, bei “Ir”, “Ar”, “or”, “mr”

Kelių galimų variantų simbolis “|” (stačias brūkšnys)

Šio simbolio pagalba galime nurodyti kelis teksto dalies variantus. Sakykim norint apibrėžti “kompas” ir “kompiuteris” mes galima parašyti paterną:

kompas|kompiuteris

Arba tą patį parašyti

komp(as|iuteris)

Šie paternai yra akvivalentūs. Atkreipkite dėmesi jog paterne norėdami išskirti kelis simbolių variantūs juos rašėme skliausteliuose

“?”, “+”, “*”

Šitie simboliai leidžia nurodyti kiek kartų turi kartotis prieš juos esanti paterno dalis.

“?” reiškia turi būti ta dalis ar ne (0 arba 1).
“+” reiškia kad šita dalis turi būti mažiausiai vieną kartą, tačiau ji gali kartotis (1 – begalybė)
“*” reiškia šita dalis gali būti, gali nebūti ir gali kartotis belekiek kartų (0 – begalybė)

Sakykim paternas:

valio+

leis apibrėžti ir valio, ir valioooooooo ir valioooooooooooooooooo. Taip pat ir “goo+gle” leis apibrėžti ir google, ir gooooogle ir goooooooooooogle.
taip pat šiuos simbolius galime naudoti klasėms arba grupėms. Sakykim “A[šru]+” nurodo ir Aš, ir Ašššššš, ir Auuuuuuuu, beje šitam paternui tiks ir “Aršuš”. O “(go )+” jau nurodo ir “go ” ir “go go go go “. Norėdami panaikinti tarpelį gale galima parašyti tokį paterna: “go( go)*”

Intervalai “{” ir “}” ({min,max})

Intervalų pagalba galime nurodyti kiek tam tikra peterno dalis gali kartotis. Sakykim “go(2,10)gle” paternui tiks “google” ir “gooooogle”, tačiau “gogle” jau nebetiks. Jeigu intervalą parašome po sklaiustų, tai jis galios tuose sklaiustuose esančiai grupei, o po simbolių klaisės tai simbolių klasei.

Paterno grupės tarp “(” ir “)”

Skliausteliais galime apgaubti grupe. Taip pat galima grupę dėti į kitą grupę. Tokiu būtų galime parašyti sudėtingus paternus. Pavizdys: “([Yy]ahoo|([Gg]oo+gle))” tiks eilutėms “Yahoo”, “goooogle”, “google”.

Escape “/”

Escape leidžia paternuose apibrėžti rezervuotus simbilius, sakykim paternas “goo+gle\.com” leis apibrėžti “google.com”

Keletas pavizdžių

Audi automobilių apibėžimas “[Aa]udi ((10|9|8)0|A[1-8])”
Paprastas adreso atpazinimas “http(s)?:\/\/[-0-9a-zA-Z]+(\.[-0-9a-zA-Z]+)*”
Pašto atpažinimas “[-0-9a-zA-Z]+(\.[-0-9a-zA-Z]+)*@[-0-9a-zA-Z]+(\.[-0-9a-zA-Z]+)+”
Dvjetainių skaičų atpažinimas “[01]+”
Dešimtainių skaičių atpažinimas “[0-9]+”
Šešioliktainių skaičių atpažinimas “[0-9a-fA-F]+”
Norėdami aptikti ir neigiamus skaičius “[-]?[0-9]+”

Pasitreniruote galite http://neworldwar.com/preg.php


7 Comments for this entry

  • vits

    Geras straipsniukas, nes regular expressions lietuviskai nedaug info.
    Tik biski neaisku kuo skiriasi [-0-9a-zA-Z] ir pvz [0-9a-zA-Z] m?

  • neworld

    [-0-9a-zA-Z] priekį padėtas brūkšnys reiškia jog galimas ir brūkšnys. Taigi pagal ši paterna tinka visos raidės, visi skaičiai ir brūkšnys.

  • peluang usaha terbaru 2015

    Follow these seven steps and if you doo it correctly, you’ll soon find yourself with more clients.
    How much do you need to ake to take care of your own financial health and that of
    your business, and how many hours do you want to work to achieve that number.
    Let’s look at some quick and simple ways to promote your online presence wuile building your online based business.
    In fact some companies get their entire income from affiliate marketing.

  • Baju Distro Cewek

    The brand Knickers and their associated knee high stocking socks changed to thinner, more relaxed pants tthat allowed them to move freely and more
    relaxed tto take the sweat away. The stores often wanbt
    tto get rid of old stock to make room for the season’s new fashion items,
    and wholesalers buy this stock at a fraction off the retaijl price.
    Mostt of the cameras have different kinds of zooming features, cameras, musiic
    thhat yyou can download, and you can even shop online with some.
    If you have seen a hip hop artist, you would see that
    they wear highhly over ssized andd loose shirts, which usually have some sor of written quotes orr designs on them.

  • NJ RV Storage

    Definitely believe that which you stated. Your favorite justification seemed to be at the net the simplest thing to
    keep in mind of. I say to you, I definitely get irked while
    other people think about concerns that they just do not understand about.
    You controlled to hit the nail upon the highest as well as outlined out the entire thing
    with no need side-effects , other people could take a signal.
    Will likely be again to get more. Thank you

  • Alejandro

    Hi there, just wanted to say, I liked thiis post.
    It was practical. Keep on posting!

  • Latoya

    Wonderful goods from you, man. I’ve take note your stuff prior to and you’re just extremely excellent.
    I actually like what you’ve received here, certainly like what you are stating and the way in which wherein you are saying it.
    You are making it enjoyable and you continue to take care of to
    stay it wise. I cant wait to read much more from you. That is really a terrific web site.

    my web page nhl 15 coins fast maplestory – Latoya -

Looking for something?

Use the form below to search the site:

Still not finding what you're looking for? Drop a comment on a post or contact us so we can take care of it!