Tester wyrażeń regularnych
Wpisz wzorzec i tekst — dopasowania podświetlają się na żywo, a grupy przechwytujące są wypisane poniżej.
Budowanie wzorca krok po kroku
Najszybsza droga do działającego wyrażenia regularnego jest żenująco mało efektowna: zacznij od wpisania dosłownego tekstu, który chcesz znaleźć, obserwuj, jak się podświetla, a dopiero potem uogólniaj go krok po kroku — zamień cyfry na klasę taką jak [0-9]+, dopuść części opcjonalne znakiem zapytania, zakotwicz go ^ lub $, gdy środek już działa poprawnie. Ponieważ dopasowania aktualizują się na żywo w trakcie pisania, każda drobna zmiana daje natychmiastową informację zwrotną, a błąd ujawnia się w chwili, gdy go popełnisz, a nie trzy edycje później. Równie ważne jest to, co wklejasz w pole tekstowe: uwzględnij linijki, których wzorzec nie powinien dopasować, nie tylko te, które powinien. Wzorzec testowany wyłącznie na szczęśliwych przykładach ma zwyczaj dopasowywać połowę dokumentu w chwili, gdy zetknie się z prawdziwymi danymi.
Wydobywanie danych robią grupy przechwytujące
Zamknij część wzorca w nawiasach, a stanie się grupą przechwytującą — fragmentem każdego dopasowania, który tak naprawdę chcesz zachować. Wzorzec taki jak ([0-9]{2}):([0-9]{2}) uruchomiony na stronie tekstu nie tylko znajduje godziny; tabela pod tekstem wypisuje każde dopasowanie, gdzie grupa pierwsza trzyma godziny, a grupa druga minuty, plus pozycję, w której zostało znalezione. Dodaj flagę g, a zbierzesz każde wystąpienie w tekście zamiast zatrzymywać się na pierwszym. To szczery rdzeń większości codziennej pracy z wyrażeniami regularnymi: nie sprytna walidacja, lecz wyciąganie ustrukturyzowanych wartości — dat, numerów zamówień, cen — z tekstu, który nigdy nie miał być ustrukturyzowany.
Gdy wzorzec się zawiesza — i sieć bezpieczeństwa
Niektóre wzorce to pułapki. Zagnieźdź jeden otwarty kwantyfikator wewnątrz drugiego — klasycznym kształtem jest (a+)+ — a przy złych danych wejściowych silnik próbuje wykładniczej liczby sposobów podziału tekstu, zanim się podda. Na większości stron zamraża to całą kartę; tutaj dopasowywanie działa w osobnym wątku w tle, który jest zatrzymywany po dwóch sekundach, więc dostajesz wyjaśnienie zamiast martwej strony. Lekarstwem niemal zawsze jest uczynienie wzorca bardziej konkretnym, tak by silnik miał mniej sposobów na pocięcie tego samego tekstu. Jedno szczere zastrzeżenie: ten tester używa silnika JavaScriptu, co jest idealne, jeśli wzorzec ma trafić do skryptu albo strony internetowej, ale Python i PCRE różnią się w kilku konstrukcjach — przetestuj też w docelowym języku. Gdy wartości, które wyciągasz, mają trafić do linku albo parametrów zapytania, naturalnym kolejnym krokiem jest nasz koder/dekoder URL.
Jak działa ten tester
Twój wzorzec jest dopasowywany do tekstu za pomocą wbudowanego silnika wyrażeń regularnych JavaScript — tego samego, którego użyje Twój kod, jeśli to jest dla skryptu lub strony internetowej. Dopasowania są podświetlane w tekście i wypisane wraz z grupami przechwytującymi poniżej.
Jakie flagi są obsługiwane?
g (globalna — znajduje wszystkie dopasowania, nie tylko pierwsze), i (bez rozróżniania wielkości liter) oraz m (wieloliniowa, dzięki czemu ^ i $ dopasowują granice linii) — te, których będziesz używać w praktyce.
Dlaczego mój wzorzec wyświetla błąd?
Składnia wyrażeń regularnych w JavaScript różni się nieco od innych języków (PCRE, Python) — nieobsłużony znak specjalny lub nieobsługiwana konstrukcja spowoduje błąd składni, wyświetlony wprost zamiast cichego, błędnego wyniku.
Czy mój tekst jest gdzieś wysyłany?
Nie — dopasowywanie odbywa się w całości w Twojej przeglądarce, w zwykłym języku JavaScript. Nic nie jest przesyłane.
