Główna » Kodowanie » Przewodnik dla początkujących do wyrażenia regularnego (Regex)

    Przewodnik dla początkujących do wyrażenia regularnego (Regex)

    Wyrażenie regularne to zestaw znaków tworzących wzór, który można przeszukiwać w ciągu. Regex może być używany do uprawomocnienie na przykład w celu potwierdzenia numerów kart kredytowych Szukaj tj. za pomocą złożonych dopasowań tekstu i za zastępując dopasowany tekst z innym ciągiem. Posiada również doskonałą obsługę wielu języków - naucz się go raz i możesz go używać w wielu językach programowania.

    Widziałem kilka osób, które po raz pierwszy spojrzały na wyrażenie regularne i całkowicie je zignorowały. Nie obwiniam ich; składnia wyrażenia regularnego jest złożona i sprawi, że wiele zawstydzi tak samo jak te języki wiersza poleceń, tylko gorzej. Ale wtedy każda nowa rzecz jest przerażająca i na pierwszy rzut oka wydaje się niemożliwa. Więc, pożyczając słowa Horatiusza, powiem to; Zacznij, bądź śmiały i zaryzykuj mądrość.

    O Regex

    Regex miał swoje korzenie w neuronauce i matematyce i został wprowadzony do programowania w 1968 r. Przez Kena Thompsona w edytorze tekstu QED do wyszukiwania tekstu. Teraz jest częścią wielu języków programowania, takich jak Perl, Java, Python, Ruby i JavaScript.

    Przyjrzyjmy się kilku przykładom działania regex.

    Będę używał JavaScript w moich przykładach. Teraz, aby przejść na poziom początkujący, musisz nauczyć się wszystkiego znaki, klasy, kwantyfikatory, modyfikatory i metody używane w wyrażeniach regularnych. Oto link do strony wyrażeń regularnych Mozilla Network, w której możesz zobaczyć tabelę zawierającą wszystkie. Możesz również odwołać się do arkusza kalkulacyjnego na końcu tego posta z najczęściej używanymi postaciami.

    Zobaczmy prosty przykład z wyjaśnieniem. To jest wyrażenie regularne.

    Oto, co powyższy wyrażeń regularnych będzie szukać w wierszu, znak „B”, po którym następuje co najmniej jeden dowolny znak między (a także) „a” do „z”, „A” do „Z” i cyfry 0 do 9.

    Oto przykład dopasowania w podświetlonej linii:

    Kosz, żarówka, B12 witamina, BaSO4, N pne firma

    Powyższe wyrażenie regularne zatrzyma wyszukiwanie Kosz i zwróć pozytywną odpowiedź. To jest ponieważ globalny modyfikator ”sol„musi zostać określony jeśli chcesz, aby regex sprawdził wszystkie możliwe dopasowania.

    Zobaczmy teraz, jak użyć tego wyrażenia w JavaScript. The test metoda idzie: jeśli znalazł zwrot meczu prawdziwe, jeszcze fałszywy.

     var input = "twój ciąg testowy", regex = / B [a-zA-Z d] + /; alert (! regex.test (input)) alert („Nie znaleziono dopasowania”); else alert („Znaleziono dopasowanie”);

    Spróbujmy innej metody: mecz zwraca dopasowania znalezione w tablicy.

     var input = "twój ciąg testowy", regex = / B [a-zA-Z d] + / g, / * Dodałem modyfikator globalny 'g' do wyrażenia regularnego, aby uzyskać wszystkie dopasowania * / ary = input.match (regex); jeśli (ary === null) alert („Nie znaleziono dopasowania”); else alert ('dopasowania to:' + ary.toString ());

    Co powiesz na struny zastąpić? Spróbujmy teraz z wyrażeniem regularnym.

     var input = "twój ciąg testowy", regex = / B [a-zA-Z d] + / g; alert (input.replace (regex, „#”));

    Poniżej znajduje się lista kodów, którą możesz ulepszyć. Kliknij kartę „JavaScript”, aby wyświetlić kod JS.

    Ćwiczenia

    W przypadku ćwiczeń możesz google “ćwiczenia regex” i spróbuj je rozwiązać. Oto, czego się spodziewać podczas próby wykonania tych ćwiczeń, zgodnie z poziomami trudności.

    Podstawowy

    Dla mnie możliwość potwierdź hasło wystarczy na początek. Sprawdź poprawność hasła o długości od 8 do 16 znaków, alfanumerycznej z możliwością wyboru znaków specjalnych.

    Pośredni

    W tym miejscu powinieneś ćwiczyć z większymi danymi z prawdziwego świata i dowiedzieć się więcej o takich punktach spojrzenie w przód, twierdzenia lookbehind i pasujące grupy;

    • Zatwierdź kody PIN, szesnastkowe, daty, identyfikator e-mail, zmiennoprzecinkowe.
    • Zamień końcowe zero, białe spacje, zestaw pasujących słów
    • Wyodrębnij różne części adresu URL

    zaawansowane

    Możesz zoptymalizować powyższe rozwiązania ćwiczeń - najbardziej optymalne wyrażenie dla wiadomości e-mail zawiera tysiące znaków - tak weź go tak daleko, jak to tylko możliwe i wystarczy. Możesz także spróbować:

    • Przetwarzanie HTML lub XML (mimo że w rzeczywistości nie jest to zalecane, ponieważ użycie wyrażenia regularnego do analizowania nieregularnego języka, takiego jak HTML, nigdy nie uczyni go niezawodnym. Plus parsowanie XML jest trudnym zadaniem, bardziej odpowiednim dla użytkowników na poziomie zaawansowanym)
    • Zastępowanie tagów
    • Usuwanie komentarzy (z wyjątkiem komentarzy warunkowych IE)

    Przybory

    Narzędzia do wizualizować wyrażenie regularne to jedna z najfajniejszych rzeczy dla mnie. Jeśli natkniesz się na długie złożone wyrażenie regularne, po prostu skopiuj je do jednego z tych narzędzi, a będziesz w stanie wyraźnie zobaczyć przepływ. Poza tym istnieje wiele narzędzi, które można wykorzystać do manipulowania kodem regex. Prezentują także przykłady i arkusze kalkulacyjne wraz z funkcjami udostępniania.

    • Debuggex - rysuje schemat wyrażeń regularnych zgodnie z danymi wejściowymi i możesz szybko udostępnić stertę StackOverflow.
    • RegExr - Możesz przetestować swój regex za pomocą tego wyrażenia. Dostał także referencję, arkusz kalkulacyjny i przykłady, które pomogą ci.
    • Refiddle - W tej chwili, poza JavaScriptem, możesz również bawić się wersjami Ruby i .NET wyrażenia regularnego w nim.

    Regex Cheatsheet

    Znak Definicja
    [ABC] Dowolny pojedynczy znak a, b lub c
    [^ abc] Dowolny znak inny niż a, b lub c
    [a-z] Znak między (w tym) a do z
    [^ a-z] Postać z wyjątkiem od a do z
    [A-Z] Znak między (w tym) od A do Z
    . Każda pojedyncza postać
    s Dowolny biały znak
    S Dowolny znak spacji
    \re Dowolna cyfra od 0 do 9
    \RE Dowolna cyfra
    w Dowolny znak słowny (litera, numer i podkreślenie)
    W Dowolny znak inny niż słowo
    (…) Uchwyć wszystko zamknięte
    (a | b) Dopasuj a lub b
    za? Znak a jest albo nieobecny, albo jest obecny jeden raz
    za* Postać a jest nieobecna lub występuje więcej razy
    za+ Znak a jest obecny raz lub więcej razy
    a 3 3 występy postaci po kolei
    a 3, 3 lub więcej wystąpień postaci po kolei
    a 3,6 3 do 6 wystąpień postaci po kolei
    ^ Początek ciągu
    $ Koniec łańcucha
    \b Granica słowa. Jeśli znak jest ostatnim lub pierwszym słowem w słowie lub jeśli znak znajduje się między znakiem słowa lub znakiem innym niż słowo
    \B Granica bez słów

    Teraz przeczytaj: Wyrażenia regularne: 30 przydatnych narzędzi i zasobów