Tester wyrażeń regularnych
Testuj wyrażenia regularne z podświetlaniem dopasowań i grupami na żywo
O tym narzędziu
Napisz wzorzec, wklej przykładowy tekst, a każde dopasowanie zostanie podświetlone w trakcie pisania — z grupami przechwytującymi, grupami nazwanymi i pozycjami dopasowań wypisanymi poniżej. Tester korzysta z silnika RegExp JavaScriptu, więc zachowanie odpowiada dokładnie temu, co zrobią Node.js i przeglądarki, łącznie z lookbehind, grupami nazwanymi i escape’ami właściwości Unicode.
Flagi przełącza się literami (g, i, m, s, u, y, d), a wzorzec kompilowany jest przy każdym naciśnięciu klawisza; błędy składni pojawiają się od razu, wraz z komunikatem samego silnika, a nie dopiero po kliknięciu przycisku. Wzorce dopuszczające puste dopasowanie, takie jak a*, obsługiwane są bezpiecznie, a liczba dopasowań ograniczona jest do 10 000, żeby zabłąkane .* nie zamroziło karty.
Odmiany wyrażeń regularnych różnią się między silnikami — wzorzec działający tutaj może wymagać poprawek dla PCRE, RE2 albo modułu re w Pythonie, głównie w kwestii obsługi lookbehind, kwantyfikatorów zaborczych i flag wbudowanych w wzorzec.
Często zadawane pytania
- Której odmiany wyrażeń regularnych używa ten tester?
- ECMAScript (JavaScript), w wydaniu Twojej własnej przeglądarki. Obsługuje lookahead, lookbehind, nazwane grupy przechwytujące, odwołania wsteczne oraz escape’y właściwości Unicode w rodzaju \p{Letter} (z flagą u). Nie obsługuje składni wyłącznie PCRE, takiej jak kwantyfikatory zaborcze czy rekurencja.
- Dlaczego mój wzorzec dopasowuje wszystko albo nic?
- Dwie klasyczne przyczyny: nieuciekniony metaznak (. pasuje do dowolnego znaku — dla dosłownej kropki napisz \.) albo zapomniana flaga g. Ten tester zawsze znajduje wszystkie dopasowania, ale Twój kod znajdzie tylko pierwsze, jeśli g nie zostanie ustawione.
- Czym są nazwane grupy przechwytujące?
- Składnia (?<nazwa>...) etykietuje grupę, dzięki czemu odczytujesz dopasowania po nazwie zamiast po pozycji: match.groups.nazwa w JavaScripcie. Panel grup pod dopasowaniami pokazuje dla każdego trafienia zarówno numerowane, jak i nazwane przechwycenia.
- Czy wyrażenie stąd zadziała bez zmian w Pythonie albo Go?
- Często tak, ale nie zawsze. Klasy znaków, kwantyfikatory i kotwice są przenośne; lookbehind, składnia grup nazwanych (Python używa (?P<nazwa>...)) i flagi wbudowane różnią się. Silnik RE2 w Go dodatkowo w ogóle odrzuca odwołania wsteczne i lookaround.