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
Gruodis 19th, 2008 on 13:02:42
Geras straipsniukas, nes regular expressions lietuviskai nedaug info.
Tik biski neaisku kuo skiriasi [-0-9a-zA-Z] ir pvz [0-9a-zA-Z] m?
Gruodis 19th, 2008 on 13:41:40
[-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.
Gruodis 24th, 2014 on 14:05:45
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.
Sausis 25th, 2015 on 08:43:11
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.
Vasaris 19th, 2015 on 03:00:23
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
Birželis 3rd, 2015 on 04:21:44
Hi there, just wanted to say, I liked thiis post.
It was practical. Keep on posting!
Birželis 15th, 2015 on 17:35:09
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 -