Reguliarioji išraiška (regex) yra simbolių seka, apibrėžianti paieškos šabloną. Štai kaip rašyti reguliariąsias išraiškas:
- Pradėkite suprasdami specialiuosius simbolius, naudojamus reguliariajame reiškinyje, pvz., ., *, +, ? ir kt.
- Pasirinkite programavimo kalbą arba įrankį, palaikantį regex, pvz., Python, Perl arba grep.
- Parašykite savo modelį naudodami specialiuosius ir pažodinius simbolius.
- Naudokite atitinkamą funkciją arba metodą, kad ieškotumėte šablono eilutėje.
Pavyzdžiai:
- Kad atitiktumėte pažodinių simbolių seką, tiesiog parašykite tuos simbolius šablone.
- Norėdami suderinti vieną simbolį iš galimybių rinkinio, naudokite laužtinius skliaustus, pvz. [0123456789] atitinka bet kurį skaitmenį.
- Kad atitiktų nulį ar daugiau ankstesnės išraiškos atvejų, naudokite žvaigždutės (*) simbolį.
- Norėdami suderinti vieną ar daugiau ankstesnės išraiškos atvejų, naudokite pliuso (+) simbolį.
- Svarbu pažymėti, kad reguliarioji išraiška gali būti sudėtinga ir sunkiai skaitoma, todėl norint derinti ir optimizuoti šablonus, rekomenduojama naudoti tokius įrankius kaip reguliariojo reiškinio testeriai.
Reguliarioji išraiška (kartais vadinama racionalia išraiška) yra simbolių seka, apibrėžianti paieškos šabloną, daugiausia skirta šablonų derinimui su eilutėmis arba eilučių derinimui, t. y. panašioms operacijoms rasti ir pakeisti. Reguliarūs posakiai yra apibendrintas būdas suderinti šablonus su simbolių sekomis. Jis naudojamas visose programavimo kalbose, tokiose kaip C++, Java ir Python.
if ir else in bash
Kas yra reguliarioji išraiška ir kodėl ji tokia svarbi?
Regex naudojamas Google analizė URL atitikimo funkcija palaikant paiešką ir pakeičiant populiariausiuose redaktoriuose, pvz., Sublime, Notepad++, Brackets, Google Docs ir Microsoft Word.
Example : Regular expression for an email address : ^([a-zA-Z0-9_-.]+)@([a-zA-Z0-9_-.]+).([a-zA-Z]{2,5})$> Aukščiau pateikta reguliarioji išraiška gali būti naudojama norint patikrinti, ar nurodytas simbolių rinkinys yra el. pašto adresas, ar ne.
Kaip rašyti reguliariąsias išraiškas?
Yra tam tikri elementai, naudojami reguliariosioms išraiškoms rašyti, kaip nurodyta toliau:
1. Kartotuvai ( *, + ir { } )
Šie simboliai veikia kaip kartotuvai ir praneša kompiuteriui, kad ankstesnis simbolis turi būti naudojamas daugiau nei vieną kartą.
2. Žvaigždutės simbolis ( * )
Ji nurodo kompiuteriui 0 ar daugiau kartų (iki begalybės) atitikti ankstesnį simbolį (arba simbolių rinkinį).
Example : The regular expression ab*c will give ac, abc, abbc, abbbc….and so on>
3. Pliuso simbolis ( + )
Ji nurodo kompiuteriui pakartoti ankstesnį simbolį (arba simbolių rinkinį) bent vieną ar daugiau kartų (iki begalybės).
Example : The regular expression ab+c will give abc, abbc, abbbc, … and so on.>
4. Garbanoti petnešos { … }
Ji nurodo kompiuteriui pakartoti ankstesnį simbolį (arba simbolių rinkinį) tiek kartų, kiek yra šiame skliauste.
Example : {2} means that the preceding character is to be repeated 2 times, {min,} means the preceding character is matches min or more times. {min,max} means that the preceding character is repeated at least min & at most max times.> 5. Pakaitos simbolis ( . )
Taško simbolis gali užimti bet kurio kito simbolio vietą, todėl jis vadinamas pakaitos simboliu.
Example : The Regular expression .* will tell the computer that any character can be used any number of times.>
6. Pasirenkamas simbolis (?)
Šis simbolis praneša kompiuteriui, kad prieš tai einančio simbolio gali būti arba nebūti eilutėje, kurią reikia suderinti.
Example : We may write the format for document file as – docx? The ‘?’ tells the computer that x may or may not be present in the name of file format.>
7. Karto ( ^ ) simbolis ( Nustatymų pozicija rungtynėms)
Caret simbolis praneša kompiuteriui, kad atitikmuo turi prasidėti eilutės ar eilutės pradžioje.
Example : ^d{3} will match with patterns like '901' in '901-333-'.> 8. Dolerio ($) simbolis
Jis nurodo kompiuteriui, kad atitiktis turi būti eilutės pabaigoje arba prieš eilutės ar eilutės pabaigoje.
pasirinkimas rūšiuoti java
Example : -d{3}$ will match with patterns like '-333' in '-901-333'.> 9. Charakterių klasės
Simbolių klasė atitinka bet kurį iš simbolių rinkinio. Jis naudojamas norint suderinti pagrindinį kalbos elementą, pvz., raidę, skaitmenį, tarpą, simbolį ir kt.
s : atitinka bet kokius tarpo simbolius, pvz., tarpą ir skirtuką.
S : atitinka visus ne tarpo simbolius.
d : atitinka bet kurį skaitmenį.
D: atitinka bet kokius neskaitmenis simbolius.
In : atitinka bet kurį žodžio simbolį (iš esmės raidinį ir skaičių)
IN : atitinka bet kurį ne žodžio simbolį.
: atitinka bet kurią žodžio ribą (tai būtų tarpai, brūkšniai, kableliai, kabliataškiai ir kt.
[set_of_characters]: Atitinka bet kurį vieną simbolį rinkinyje_of_characters. Pagal numatytuosius nustatymus atitiktyje skiriamos didžiosios ir mažosios raidės.
Example : [abc] will match characters a,b and c in any string.>
10. [^simbolių_rinkinys] Neigimas:
Atitinka bet kurį vieną simbolį, kuris nėra rinkinyje „set_of_characters“. Pagal numatytuosius nustatymus atitiktyje skiriamos didžiosios ir mažosios raidės.
Example : [^abc] will match any character except a,b,c .>
11. [pirmas-paskutinis] Simbolių diapazonas:
Atitinka bet kurį vieną simbolį diapazone nuo pirmo iki paskutinio.
Example : [a-zA-z] will match any character from a to z or A to Z.>
12. Pabėgimo simbolis ( )
Jei norite atitikti tikrus „+“, „.“ ir tt simbolius, prieš šį simbolį pridėkite pasvirąjį brūkšnį ( ). Taip kompiuteris nurodys, kad šis simbolis būtų laikomas paieškos simboliu ir apsvarstys jį ieškant atitikimo šablono.
Example : d+[+-x*]d+ will match patterns like '2+2' and '3*9' in '(2+2) * 3*9'.>
13. Simbolių grupavimas ( )
Įvairių reguliariosios išraiškos simbolių rinkinį galima sugrupuoti, kad jie veiktų kaip vienas vienetas ir veiktų kaip blokas. Tam jums reikia įterpti reguliariąją išraišką skliausteliuose ( ).
Example : ([A-Z]w+) contains two different elements of the regular expression combined together. This expression will match any pattern containing uppercase letter followed by any character.>
14. Vertikali juosta ( | )
Atitinka bet kurį elementą, atskirtą vertikalios juostos (|) simboliu.
Example : th(e|is|at) will match words - the, this and that.>
15. umeris
Atgalinė nuoroda: leidžia vėliau identifikuoti anksčiau suderintą antrinę išraišką (išraiška užfiksuota arba įterpta į apskritus skliaustus ) vėliau toje pačioje reguliariojoje išraiškoje. reiškia, kad grupė, esanti n-tajame skliaustelyje, bus pakartota dabartinėje padėtyje.
Example : ([a-z])1 will match ee in Geek because the character at second position is same as character at position 1 of the match.>
16. Kaip ( ?# komentaras )
Įdėtasis komentaras: komentaras baigiasi pirmuoju uždaromuoju skliaustu.
Example : A(?#This is an inline comment)w+>
17. # [iki eilutės pabaigos]
X režimo komentaras. Komentaras prasideda simboliu # ir tęsiasi iki eilutės pabaigos.
Example : (?x)Aw+#Matches words starting with A>