Przejdź do treści
helpyself

Objaśniacz regexów

Local only — nothing is uploaded unless you save or share it.

Objaśniacz regexów: wklej wzorzec i przeczytaj, co robi każda jego część, po polsku.

  1. Wklej swoje wyrażenie regularne, z ukośnikami albo bez
  2. Czytaj rozbiór od góry do dołu
  3. Idź za wcięciami, żeby zobaczyć, do czego odnosi się każdy kwantyfikator
Z ukośnikami albo bez. Działają zarówno /\d{4}-\d{2}/g, jak i \d{4}-\d{2}.
Zapisz to narzędzie

Miej Objaśniacz regexów pod ręką

Dodaj do zakładek

O tym narzędziu

Objaśniacz regexów rozbiera wyrażenie regularne na części i opisuje każdy kawałek zwykłymi słowami. Wklej wzorzec — z otaczającymi ukośnikami i flagami albo bez nich — a dostaniesz konspekt: co dopasowuje każdy element, ile razy może się powtórzyć i które części są przechwytywane. Tym, co czyni regex nieczytelnym, rzadko są pojedyncze kawałki. Większość ludzi wie, czym jest \d. Naprawdę trudno dostrzec, co do czego się odnosi: czy plus powtarza jeden znak, czy całą grupę, gdzie zaczyna się i kończy alternatywa i na co właściwie patrzy asercja w przód. Dlatego objaśnienie jest zagnieżdżone i to zagnieżdżenie jest tu istotą — wcięcie odpowiada na to pytanie, zanim zrobi to którekolwiek ze słów. Czyta wzorzec, zamiast go uruchamiać. To znaczy dwie użyteczne rzeczy. Wzorzec, którego uruchomienie na wrogim wejściu zajęłoby minuty, jest objaśniany natychmiast, bo przeczytanie go to ułamek pracy. A wzorzec, który się nie kompiluje, też zostaje objaśniony: jeśli wkleiłeś coś dlatego, że jest zepsute, usłyszenie „SyntaxError” odstawia cię tam, gdzie zacząłeś, więc problemy zgłaszane są obok rozbioru, a nie zamiast niego. Nic nigdzie nie jest wysyłane. Wzorce często niosą wskazówki o danych, dla których zostały napisane, a te zostają w twojej przeglądarce.

Najczęstsze pytania

Co znaczy ten regex?

Wklej go i przeczytaj konspekt. Każdy wiersz nazywa jeden kawałek wzorca i mówi, co dopasowuje; wiersze wcięte są wewnątrz grupy stojącej nad nimi. Jeśli kwantyfikator w rodzaju + albo {2,4} odnosi się do kawałka, jest to powiedziane w tym samym wierszu — i to właśnie tę część ludzie najczęściej czytają źle.

Czy objaśni wyrażenie regularne napisane przez kogoś innego?

Właśnie po to jest. Wklej wzorzec, a dostaniesz rozbiór kawałek po kawałku — ta grupa, ten kwantyfikator, ta klasa znaków — zamiast jednego zdania podsumowania. Przełożenie regexa na zwykły język jest użyteczne tylko przy takiej dokładności, bo częścią, którą źle odczytałeś, jest zwykle pojedynczy element, a parafraza całego wzorca chowa dokładnie ten element, w którym się pomyliłeś.

Czy mogę wkleić wzorzec z ukośnikami i flagami?

Tak. Rozumiane są zarówno /\d+/gi, jak i \d+. Jeśli flagi są obecne, zostaną wypisane wraz z tym, co robi każda z nich, bo g, i, m oraz s zmieniają zachowanie wzorca bardziej niż większość jego znaków.

Czy objaśni regex, który nie działa?

Tak i jest to zamierzone. Niedomknięty nawias, zabłąkany kwantyfikator albo niemożliwa liczność w rodzaju {5,2} zgłaszane są jako problem, a reszta wzorca i tak zostaje objaśniona. Otrzymanie samego komunikatu o błędzie nie pomaga, gdy powodem twojej wizyty było właśnie to, że wzorzec jest zepsuty.

Czy to to samo co testowanie regexa?

Nie. To czyta wzorzec i mówi ci, co on mówi; tester uruchamia go na tekście i pokazuje, co dopasował. Odpowiadają na różne pytania i często przydają się razem — nasz tester regexów jest o jedno kliknięcie stąd.

Dlaczego ab+ nie powtarza całości?

Bo kwantyfikator odnosi się do pojedynczego elementu bezpośrednio przed nim, więc ab+ to a, po którym idzie jedno albo więcej b. Żeby powtórzyć oba, potrzebujesz grupy: (ab)+. To najczęstsze błędne odczytanie regexa, i właśnie dlatego konspekt zawsze pokazuje kwantyfikator doczepiony dokładnie do tego kawałka, którym rządzi.

Czym różni się grupa przechwytująca od (?:...)?

Grupa przechwytująca zachowuje to, co dopasowała, żebyś mógł się do tego potem odwołać, numerem albo nazwą. (?:...) grupuje znaki dla struktury — żeby kwantyfikator albo alternatywa mogły odnieść się do nich wszystkich — nie zachowując wyniku. Użycie grupy nieprzechwytującej tam, gdzie wartość nie jest ci potrzebna, utrzymuje numerację pozostałych w porządku.

Pomóż ulepszyć to narzędzie

Znalazłeś błąd, chcesz zmiany albo brakuje Ci jakiegoś narzędzia?

/regex-explainer

↑↓ nawigacja · Enter otwiera · Esc zamyka