Príručka pre začínajúcich používateľov regulárneho výrazu (Regex)
Regulárny výraz je súbor znakov tvoriaci vzorec, ktorý možno vyhľadávať v reťazci. Regex môže byť použitý pre validácia ako napríklad overenie čísel kreditných kariet Vyhľadávanie tj prostredníctvom zložitých textových zhody a za nahrádzať zodpovedajúci text s iným reťazcom. Má tiež vynikajúcu podporu viacerých jazykov - naučte sa to raz a môžete ju používať v mnohých programovacích jazykoch.
Videl som niekoľko ľudí, ktorí sa prvýkrát pozreli na regex a úplne to ignorovali. Neviním im; regex syntax je zložitý a bude robiť veľa zhŕňať rovnako ako tie jazyky príkazového riadku, len horšie. Ale potom každá nová vec je desivá a zdá sa, že sa nemôže najprv naučiť. Takže, požičiavam Horatiusove slová, poviem to; Začnite byť odvážni a snažte sa byť múdry.
O spoločnosti Regex
Regex mal svoje korene v oblasti neurovedy a matematiky a bol implementovaný iba v roku 1968 programom Ken Thompson v textovom editore QED pre textové vyhľadávanie. Teraz je súčasťou mnohých programovacích jazykov, ako sú Perl, Java, Python, Ruby a JavaScript.
Pozrime sa na niekoľko príkladov o tom, ako funguje regex.
V mojich príkladoch budem používať JavaScript. Teraz, aby ste zažili úroveň začiatočníkov, musíte sa naučiť všetko znakov, tried, kvantifikátorov, modifikátorov a metód používané v regexu. Tu je odkaz na stránku Regular Expression siete Mozilla Developer Network, kde si môžete prezrieť tabuľku obsahujúcu všetky tieto. Môžete tiež odkazovať na cheatsheet na konci tohto príspevku s najpoužívanejšími znakmi.
Pozrime sa na jednoduchý príklad s vysvetlením. Toto je regex.
To je to, čo vyššie uvedený regex bude hľadať v riadku, znak "B", za ktorým nasleduje aspoň jeden znak od (a vrátane) 'a' až 'z', 'A' až 'Z' 9.
Tu je vzorka zápasov v zvýraznenom riadku:
košík, žiarovka, B12 vitamín, BaSO4, N BC spoločnosť
Uvedený regex zastaví vyhľadávanie košík a vrátiť pozitívnu odpoveď. To je preto, lebo globálny modifikátor "g
"sa musí špecifikovať ak chcete, aby regex hľadal všetky možné zápasy.
Teraz sa pozrime, ako používať tento výraz v jazyku JavaScript. test
metóda ide: ak sa nájde návrat zápasu pravdivý
, inak nepravdivý
.
var vstup = "testovací reťazec", regex = / B [a-zA-Z \ d] + /; ak (! regex.test (input)) alert ('Nebolo nájdené'); else alert ('Zhoda je nájdená');
Vyskúšaj inú metódu: zápas
vracia zhody nájdené v poli.
var vstup = "váš testovací reťazec", regex = / B [a-zA-Z \ d] + / g, / * Pridal som globálny modifikátor 'g' input.match (regex); ak (ary === null) upozornenie ('Zhoda sa nenašla'); else alert ('súbory sú:' + ary.toString ());
Čo o reťazci vymeniť
? Skúsme to s regexom teraz.
var vstup = "testovací reťazec", regex = / B [a-zA-Z \ d] + / g; upozornenie (vstupná adresa (regex, "#"));
Nižšie nájdete kódový kód, ktorý môžete vyladiť. Kliknutím na kartu "JavaScript" zobrazíte kód JS.
cvičenie
Pre cvičenie môžete Google “regex cvičenia” a pokúste sa ich vyriešiť. Tu je to, čo môžete očakávať pri pokuse o tieto cvičenia, podľa úrovní obtiažnosti.
základné
Na to, aby som bol schopný overiť heslo stačí na začiatok. Takže overte heslo pre dĺžku 8 až 16 znakov, alfanumerické s povoleným výberom špeciálnych znakov.
prechodný
Toto je miesto, kde by ste mali praktizovať viac údajov z reálneho sveta a učiť sa niekoľko ďalších regexových bodov lookahead, lookbehind tvrdenia a zodpovedajúce skupiny;
- Overenie kódov PIN, hexadecimálov, dátumov, ID e-mailu, pohyblivého bodu.
- Nahraďte koncovú nulu, bielu oblasť, súbor zodpovedajúcich slov
- Extrahujte rôzne časti adresy URL
pokročilý
Môžete optimalizovať riešenia vyššie uvedených cvičení - najvhodnejší regex pre e-mail má tisíce znakov v ňom - tak vziať to tak ďaleko, ako sa cítite dobre a to stačí. Môžete tiež vyskúšať:
- Parsovanie HTML alebo XML (aj keď v reálnom svete sa to odrádza, pretože použitie regulárneho výrazu na analýzu nepravidelného jazyka, ako je HTML, nikdy nebude robiť to foolproof.Plus XML analýza je ťažká úloha, vhodnejšia pre pokročilých používateľov)
- Nahradenie značiek
- Odstránenie komentárov (okrem IE podmienených komentárov)
náradie
Nástroje pre vizualizovať regex sú jedným z najkrajších vecí pre mňa. Ak narazíte na dlhý komplexný regex, stačí ho skopírovať do jedného z týchto nástrojov a jasne si budete môcť prezrieť tok. Okrem toho existuje veľa nástrojov, ktoré môžete použiť na manipuláciu s regexovým kódom. Tiež predstavujú príklady a cheatsheets spolu s funkciami zdieľania.
- Debuggex - Vykresľuje regexový diagram podľa vášho vstupu a môžete rýchlo zdieľať StackOverflow hneď odtiaľ.
- RegExr - Môžete otestovať svoj regex s týmto. Má tiež odkaz, cheatsheet a príklady, ktoré vám pomôžu.
- Refiddle - V súčasnej dobe, okrem JavaScriptu, môžete tiež bežať s verziami regexu Ruby a .NET v nej.
Regex Cheatsheet
žetón | definícia |
[Abc] | Každý jeden znak a, b alebo c |
[^ Abc] | Akékoľvek iné znaky ako a, b alebo c |
[A-Z] | Znak medzi (vrátane) a až z |
[^ A-Z] | Znak okrem a až z |
[A-Z] | Znak medzi (vrátane) od A do Z |
. | Každý jeden znak |
\ s | Akékoľvek znaky medzery |
\ S | Akýkoľvek znak bez medzery |
\ d | Akákoľvek číslica 0 až 9 |
\ D | Akékoľvek číslice |
\ w | Každý znak slova (písmeno, číslo & podčiarknutie) |
\ W | Akýkoľvek neslovný znak |
(...) | Zachyťte všetko uzavreté |
(A | b) | Zhodte buď a alebo b |
? | Znak a je buď neprítomný alebo prítomný raz |
a * | Znak a je buď neprítomný, alebo prítomný viackrát |
+ | Znak a je prítomný raz alebo viackrát |
a 3 | 3 výskyty charakteru a následne |
a 3 | 3 alebo viac výskytov znakov po sebe |
a 3,6 | 3 až 6 výskytov znakov a postupne |
^ | Začiatok reťazca |
$ | Koniec reťazca |
\ b | Hranica slov. Ak je znak posledným alebo prvým slovným slovom slova alebo Ak je znak medzi slovom alebo slovom |
\ B | Nehovorová hranica |