Tester Regex

/ /

Wpisz wyrażenie regularne, wklej tekst do przetestowania, a tester uruchomi wzorzec i wypisze każde znalezione dopasowanie. Każdy wynik pokazuje, gdzie dopasowanie się zaczyna, oraz zawartość każdej grupy przechwytującej, dzięki czemu widzisz dokładnie, co wzorzec pochwycił. Włącz flagi ignorowania wielkości liter, wielowierszową i dotall, aby zmienić zachowanie wzorca.

Jak przetestować regex

  1. 1

    Wprowadź wzorzec

    Wpisz wyrażenie bez ograniczników; tester sam ujmie je w `/ /`. Nieprawidłowy wzorzec pokazuje czytelny komunikat o błędzie, zamiast po cichu zawieść.

  2. 2

    Wybierz flagi

    Włącz `i` (ignoruje wielkość liter), `m` (wielowierszowa) lub `s` (dotall), aby dopasowywać tak, jak potrzebujesz.

  3. 3

    Wklej tekst testowy

    Dodaj tekst do przeszukania. Tester przechodzi przez całość i znajduje każde dopasowanie, nie tylko pierwsze.

  4. 4

    Sprawdź dopasowania

    Każde dopasowanie pokazuje swoją pozycję (offset) w tekście, całe dopasowanie oraz każdą numerowaną grupę przechwytującą.

Co pokazuje tester

Uruchomienie wzorca w głowie lub szybkim grep mówi, czy coś pasuje. Tester pokazuje dodatkowo:

  • Każde dopasowanie z jego pozycją. Zawsze przeszukuje cały tekst i zgłasza każde dopasowanie z offsetem znaku, w którym się zaczyna.
  • Która grupa co pochwyciła. Każde dopasowanie jest rozbite na całe dopasowanie i numerowane grupy przechwytujące, dzięki czemu potwierdzisz, że (...) chwyciło oczekiwany fragment.
  • Co zmieniają flagi. Włącz i, m lub s i przetestuj ponownie, aby zobaczyć, jak ignorowanie wielkości liter, tryb wielowierszowy lub dotall zmieniają wynik.

Flagi w skrócie

Flaga Nazwa Co zmienia
i Ignoruje wielkość liter A pasuje też do a, i odwrotnie
m Wielowierszowa ^ i $ pasują na początku i końcu każdego wiersza, a nie tylko całego tekstu
s Dotall . pasuje też do znaków nowego wiersza

Dopasowywanie jest zawsze globalne: tester zwraca każde dopasowanie w tekście, więc nie ma osobnej flagi „global“ do ustawienia. Wzorce działają na silniku PCRE z obsługą Unicode, więc klasy takie jak \w i \d zachowują się spójnie na tekście międzynarodowym.

Częste problemy z regex, które to pomaga wykryć

Objaw Zwykła przyczyna
Jedno ogromne dopasowanie obejmujące wszystko .* jest zachłanne; użyj .*? lub klasy zanegowanej jak [^"]*
^ lub $ pasuje tylko raz Brak flagi m przy tekście wielowierszowym
. zatrzymuje się na znakach nowego wiersza Brak flagi s
Grupy przechwytujące w nieoczekiwanej kolejności Zagnieżdżone ( przesuwają numery grup; policz je od lewej do prawej
Wzorzec działa wolno Zagnieżdżone * lub + nad nakładającymi się alternatywami powodują duży nawrót

Wskazówki dla szybszych, bezpieczniejszych wzorców

  • Zakotwicz przez ^, gdy dopasowanie zaczyna się na początku, aby silnik nie przeszukiwał całego ciągu.
  • Wybieraj klasę znaków ([abc]) zamiast alternatywy (a|b|c); klasy są szybsze w każdym dużym silniku.
  • Zamień zachłanne .* na klasę zanegowaną jak [^"]*, gdy znasz znak kończący, aby nie było nawrotu.

Najczęściej zadawane pytania

Uruchamia Twój wzorzec za pomocą PCRE, silnika wbudowanego w PHP, z włączonym trybem Unicode. Składnia charakterystyczna dla PCRE, jak \d, \b i lookaroundy, działa zgodnie z oczekiwaniami. Jeśli użyjesz wzorca w JavaScript, Python lub innym języku, sprawdź drobne różnice składni przed wdrożeniem.

Każde. Tester zawsze przeszukuje cały tekst, więc nie ma osobnej flagi „global“ do ustawienia. Każde dopasowanie jest wypisane z pozycją w tekście.

Tak. Każde dopasowanie jest rozbite na całe dopasowanie i każdą numerowaną grupę przechwytującą, dzięki czemu potwierdzisz, którą część tekstu pochwyciło każde (...).

i sprawia, że dopasowywanie ignoruje wielkość liter, m powoduje, że ^ i $ pasują na każdej granicy wiersza, a s pozwala . pasować do znaków nowego wiersza. Włączaj je lub wyłączaj i testuj ponownie, aby porównać wyniki.

Tester pokazuje czytelny komunikat o błędzie opisujący problem, na przykład niedomknięty nawias lub niezakończoną grupę, zamiast po cichu zwracać brak dopasowań.

Powiązane narzędzia

Narzędzie jest dostępne w innych językach