DevToolPal
PL

Tester wyrażeń regularnych PCRE

Testuj wyrażenia regularne zgodne z PHP / Perl w prawdziwym silniku PCRE2: rekurencja, kwantyfikatory zaborcze, \K i więcej.

Działa lokalnie, nic nie jest wysyłane

Opcje

Tekst testowy

0 znaków · 0 B

Rezultat

Tutaj pojawi się wynik

Co robi to narzędzie

Tester wyrażeń regularnych PCRE sprawdza wyrażenie regularne na twoim tekście przy użyciu prawdziwej biblioteki PCRE2, tego samego silnika, którego używają PHP, narzędzia w stylu Perla i wiele serwerów WWW. Dopasowania są wyróżniane, każde z nich jest wypisane wraz z pozycją i grupami przechwytującymi, a opcjonalna zamiana pokazuje wynik podstawienia w stylu preg_replace.

Testowanie w prawdziwym silniku ma znaczenie, bo wyrażenia regularne PCRE i JavaScript różnią się w drobnych, ale istotnych szczegółach. Wzorzec działający w testerze opartym na przeglądarce może się nie skompilować w PHP albo dopasować coś innego.

Jak używać

  1. Wpisz wzorzec bez ograniczników w polu Wzorzec PCRE.
  2. Wklej przeszukiwany tekst w polu Tekst testowy.
  3. Włącz potrzebne modyfikatory: g dla wszystkich dopasowań (jak preg_match_all), i, m, s, x, U oraz u dla \w, \d i \b uwzględniających Unicode.
  4. Opcjonalnie wypełnij Zamień na, aby podejrzeć podstawienie. Użyj $1 lub ${1} dla grup numerowanych, ${name} dla grup nazwanych i $0 dla całego dopasowania.

Przy błędnych wzorcach wyświetla się komunikat błędu samego PCRE2 i pozycja we wzorcu, na której parser się poddał.

Przykład

Domyślny wzorzec \((?:[^()]++|(?R))*\) znajduje zrównoważone nawiasy. Dopasowuje parę nawiasów zawierającą albo znaki niebędące nawiasami, albo — rekurencyjnie — ponownie cały wzorzec. W przykładowym tekście znajduje (a, g(b, c)) i ((x), y), a ignoruje niezamknięty nawias na końcu. Wyrażenia regularne JavaScript nie potrafią tego wyrazić.

Wypróbuj (?<amount>\d+(?:\.\d+)?)\s+(?<cur>USD|EUR) z zamianą ${cur} $1, aby w drugiej linii zamienić miejscami kwoty i kody walut.

Funkcje PCRE, które warto znać

  • Kwantyfikatory zaborcze (*+, ++, ?+) i grupy atomowe ((?>...)) nigdy nie oddają tego, co dopasowały, co zapobiega niekontrolowanym nawrotom.
  • \K resetuje początek dopasowania — to prosta alternatywa dla lookbehind.
  • Rekurencja z (?R), (?1) lub (?&name) dopasowuje struktury zagnieżdżone.
  • Modyfikatory w linii, takie jak (?i), zmieniają zachowanie dla części wzorca.

Wskazówki

  • W PHP otocz wzorzec ogranicznikami, takimi jak /.../ lub ~...~, i wybierz taki, który nie występuje we wzorcu, aby nie trzeba go było escapować.
  • Włącz u, gdy twój tekst zawiera litery z diakrytykami lub znaki CJK, aby \w je dopasowywał.

FAQ

› Czym to się różni od testera wyrażeń regularnych JavaScript?

Ta strona uruchamia PCRE2, silnik stojący za funkcjami preg_ w PHP, Nginxem, Apache i wieloma innymi narzędziami, skompilowany do WebAssembly. Obsługuje składnię, której nie ma JavaScript, np. rekurencję z (?R), kwantyfikatory zaborcze takie jak a++, grupy atomowe, \K, grupy (?P<name>...) oraz modyfikatory x i U.

› Czy wpisuję ograniczniki, np. /pattern/i?

Nie. Wpisz sam wzorzec, a modyfikatory włącz polami wyboru. W PHP `preg_match('/\d+/i', $s)` odpowiada wzorcowi `\d+` z włączoną opcją Ignoruj wielkość liter.

› Dlaczego dostałem błąd „match limit exceeded”?

Niektóre wzorce, np. ^(a+)+$ na długim, niedopasowującym się tekście, wykonują wykładniczą liczbę nawrotów (backtracking). Tester zatrzymuje się po pięciu milionach kroków, aby strona nie przestała odpowiadać. PHP ma podobne zabezpieczenie, pcre.backtrack_limit, a po jego przekroczeniu preg_match zwraca false.

› Czy mój tekst jest wysyłany?

Nie. Moduł PCRE2 WebAssembly pobiera się jednorazowo, a wszystko działa w twojej przeglądarce.