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ć
- Wpisz wzorzec bez ograniczników w polu Wzorzec PCRE.
- Wklej przeszukiwany tekst w polu Tekst testowy.
- Włącz potrzebne modyfikatory: g dla wszystkich dopasowań (jak preg_match_all), i, m, s, x, U oraz u dla
\w,\di\buwzględniających Unicode. - Opcjonalnie wypełnij Zamień na, aby podejrzeć podstawienie. Użyj
$1lub${1}dla grup numerowanych,${name}dla grup nazwanych i$0dla 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. \Kresetuje 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
\wje 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.