Domovská » Kódování » Průvodce regulárních výrazů pro začátečníky (Regex)

    Průvodce regulárních výrazů pro začátečníky (Regex)

    Regulární výraz je sada znaků tvořících vzor, ​​který lze vyhledávat v řetězci. Lze použít Regex validace čísla kreditních karet, například Vyhledávání tj. prostřednictvím složitých textových shod a pro nahrazení shodného textu s jiným řetězcem. Má také velkou podporu více jazyků - jednou se naučíte a můžete ji používat v mnoha programovacích jazycích.

    Viděl jsem pár lidí, kteří se poprvé podívali na regex a úplně ho ignorovali. Neobviňuji je; syntaxe regexu je složitá a bude se množit, stejně jako jazyky příkazového řádku, jen horší. Ale pak je každá nová věc děsivá a zpočátku se zřejmě nedá naučit. Tak si to vypůjčuji Horatiovi. Začněte, buďte odvážní a pustíte se do moudrého myšlení.

    O společnosti Regex

    Regex měl své kořeny v neurovědě a matematice a byl implementován pouze v programování v roce 1968 Ken Thompsonem v textovém editoru QED pro vyhledávání textu. Nyní je součástí mnoha programovacích jazyků jako Perl, Java, Python, Ruby a JavaScript.

    Podívejme se na některé příklady, jak regex funguje.

    Budu používat JavaScript v mých příkladech. Chcete-li projít začátečníky, musíte se naučit všechny znaky, třídy, kvantifikátory, modifikátory a metody používané v regexu. Zde je odkaz na stránku regulárních výrazů Mozilla Developer Network, kde si můžete prohlédnout tabulku obsahující všechny tyto. Můžete také odkazovat na cheatsheet na konci tohoto příspěvku s většinou použitých znaků.

    Podívejme se na jednoduchý příklad s vysvětlením. Toto je regex.

    Toto je to, co bude výše uvedený regex hledat v řádku, znaku 'B', za nímž bude následovat alespoň jeden znak jakéhokoli znaku mezi (a včetně) 'a' až 'z', 'A' až 'Z' a čísla 0 až 9.

    Zde je ukázka shody ve zvýrazněném řádku:

    Košík, žárovka, B12 vitamín, BaSO4, N před naším letopočtem společnost

    Výše uvedený regex zastaví vyhledávání na Košík a vrátit pozitivní odpověď. To je Protože globální modifikátorGmusí být specifikováno pokud chcete, aby se regex podíval na všechny možné zápasy.

    Nyní se podívejme, jak používat tento výraz v JavaScriptu. test Metoda jde: je-li nalezena shoda skutečný, jiný Nepravdivé.

     var input = "váš testovací řetězec", regex = / B [a-zA-Z d] + /; if (! regex.test (input)) alert ('Nenalezena žádná shoda'); jiný záznam ('A match found');

    Zkusme jinou metodu: zápas vrátí shody nalezené v poli.

     var input = "váš testovací řetězec", regex = / B [a-zA-Z d] + / g, / * Přidal jsem globální modifikátor 'g' do regexu, abych získal všechny shody * / ary = input.match (regex); if (ary === null) upozornění ('Nenalezena žádná shoda'); else alert ('odpovídá:' + ary.toString ());

    Co takhle řetězec nahradit? Zkusme to teď s regexem.

     var input = "testovací řetězec", regex = / B [a-zA-Z d] + / g; výstraha (input.replace (regex, "#"));

    Níže je codepen pro vás vyladit. Kliknutím na kartu "JavaScript" zobrazíte kód JS.

    Cvičení

    Pro cvičení, můžete google “regex cvičení” a zkuste je vyřešit. Zde je to, co očekávat při pokusech o tyto cvičení, podle úrovně obtížnosti.

    Základní

    Abych byl schopen ověření hesla je dostačující pro začátek. Proto ověřte heslo pro délku 8 až 16 znaků, alfanumerické s možností volby speciálních znaků.

    středně pokročilí

    To je místo, kde byste měli cvičit s více reálnými daty a dozvědět se více regex bodů lookahead, lookbehind tvrzení a odpovídající skupiny;

    • Ověřte si kódy PIN, hexadecimály, data, ID e-mailu, plovoucí desetinnou čárku.
    • Nahraďte koncovou nulu, mezery, sadu odpovídajících slov
    • Rozbalte různé části adresy URL

    Pokročilý

    Můžete optimalizovat výše uvedená cvičení 'řešení - nejoptimálnější regex pro e-mail má tisíce znaků v něm - tak vezměte si to, pokud se budete cítit pohodlně a to je dost. Můžete také vyzkoušet:

    • Analyzování HTML nebo XML (eventhough v reálném světě je odradeno, aby tak učinily, protože použití regulárního výrazu k analýze nepravidelného jazyka, jako je HTML, nikdy nezajistí jeho spolehlivost. Plus XML parsování je obtížný úkol, vhodný pro pokročilé uživatele)
    • Výměna štítků
    • Odstranění komentářů (s výjimkou podmíněných komentářů IE)

    Nástroje

    Nástroje vizualizovat regex jsou pro mě jedna z nejlepších věcí. Pokud se někdy setkáte s dlouhým komplexním regexem, stačí je zkopírovat do jednoho z těchto nástrojů a budete moci jasně vidět tok. Kromě toho existuje mnoho nástrojů, které můžete použít k překrytí s regex kódem. Oni také předvést příklady a podvádí spolu s vlastnostmi sdílení.

    • Debuggex - Nakreslí regex diagram podle vašeho vstupu a můžete se rychle podělit o StackOverflow přímo od něj.
    • RegExr - můžete otestovat svůj regex s tímto. To také dostal odkaz, cheatsheet a příklady, které vám pomohou ven.
    • Refiddle - V tuto chvíli, kromě JavaScriptu, můžete také ovládat verze regexu Ruby a .NET v něm.

    Regex Cheatsheet

    Žeton Definice
    [abc] Libovolný jednotlivý znak a, b nebo c
    [^ abc] Jakýkoli jiný znak než a, b nebo c
    [a-z] Znak mezi (včetně) a až z
    [^ a-z] Znak kromě a až z
    [A-Z] Znak mezi (včetně) A až Z
    . Nějaký jediný znak
    s Libovolný znak mezery
    S Žádný znak bez mezer
    d Libovolná číslice 0 až 9
    D Libovolné jiné než číslice
    w Jakýkoliv znak slova (písmeno, číslo a podtržítko)
    W Jakýkoli ne-slovní znak
    (…) Zachyťte všechno uzavřené
    (a | b) Shoda buď a nebo b
    A? Znak a je buď nepřítomný, nebo přítomen jednou
    A* Znak a je buď nepřítomen nebo přítomen vícekrát
    A+ Znak a je přítomen jednou nebo vícekrát
    a 3 3 následky charakteru a postupně
    3, 3 nebo více výskytů charakteru za sebou
    a 3,6 3 až 6 výskytů znaků a postupně
    ^ Začátek řetězce
    $ Konec řetězce
    b Hranice slova. Pokud je znak posledním nebo prvním znakem slova nebo je-li znak mezi znakem slova nebo ne-slovem
    B Hranice bez slov

    Nyní čtěte: Regulární výrazy: 30 Užitečné nástroje a zdroje