tigtools

Regex tesztelő

Adjon meg egy mintát és egy szöveget, hogy minden találatot kiemelve lásson, a pozíciójával és a befogó csoportjaival együtt. A böngészője JavaScript regex motorját használja.

Böngészőben fut Regisztráció nélkül

Jelölők

Számozott csoportokhoz használja a $1, $2 … jelet, névvel ellátott csoportokhoz a $<name> jelet, a teljes találathoz a $& jelet, dollárjelhez pedig a $$ jelet.

Használata

  1. Írjon be egy reguláris kifejezést a Minta mezőbe, a körülvevő perjelek nélkül.
  2. Jelölje be a szükséges jelzőket. A g (global) minden találatot megtalál, nem csak az elsőt.
  3. Illessze be a keresendő szöveget. A találatok kiemelve jelennek meg, és mindegyik szerepel a listában az indexével és a befogó csoportjaival.
  4. Opcionálisan adjon meg egy helyettesítést, például $2-$1, hogy megtekintse a String.replace eredményét.

Hogyan működik

A tesztelő a böngésző beépített RegExp objektumával futtatja a mintát, így az eredmények pontosan azok, amelyeket a böngésző JavaScript (ECMAScript) kódja adna. Más nyelvek más regex-ízeket használnak: a PCRE (PHP), a Python re modulja, a Java és a .NET olyan funkciókat támogatnak, amelyek a JavaScriptből hiányoznak, például birtokos kvantorok (a++), atomi csoportok ((?>…)), beágyazott módosítók, mint a (?i), és rekurzió, valamint eltérnek olyan részletekben, mint a \A és \Z horgonyok. Tesztelje a mintát a saját nyelvében, mielőtt ott támaszkodik rá. A visszafelé nézés ((?<=…)), a nevesített csoportok ((?<name>…)) és a Unicode tulajdonság escape-ek (\p{L} az u jelzővel) minden jelenlegi böngészőben működnek.

A g vagy y jelző nélkül csak az első találatot találja meg, ahogy a RegExp.exec is. A nulla hosszúságú találatok, például a ^ vagy \b, listázva vannak, de nincsenek kiemelve; egy után a keresés egy karakterrel (az u jelzővel egy kódponttal) továbblép, ahogy a String.matchAll teszi. A rögzítő csoportok szám szerint és, ahol definiált, név szerint vannak megjelenítve; egy csoport, amely nem vett részt a találatban, úgy van jelölve, hogy nincs értéke, ami különbözik az üres találattól. Egyes minták, például az (a+)+$ egy hosszú soron találat nélkül, exponenciális időt vesznek igénybe a sikertelenséghez (katasztrofális visszalépés). A kockázat csökkentése érdekében a keresés egy pillanattal azután indul, hogy abbahagyja a gépelést, csak a szöveg első 100 000 karakterét keresi, és legfeljebb 1 000 találatot gyűjt össze. Egy kóros minta még mindig átmenetileg nem reagálóvá teheti a lapot; ha ez történik, egyszerűsítse a mintát vagy rövidítse le a szöveget.

Példák

Dátumok kinyerése

A (\d{4})-(\d{2})-(\d{2}) minta a g jelzővel a „Due 2026-03-15, paid 2026-04-02” szövegen két találatot ad. Az 1. csoport az év; a $3.$2.$1 helyettesítés a szöveget „Due 15.03.2026, paid 02.04.2026” alakra alakítja.

Nevesített csoportok az olvasható kódért

A (?<key>\w+)=(?<value>[^&]*) minta az a=1&b=two lekérdezési karakterláncon minden párhoz listázza a kulcsot és az értéket, ami megegyezik azzal, amit a JavaScriptben a match.groups.key és match.groups.value visszaad.

Kis- és nagybetűt nem megkülönböztető keresés sorokon át

^error:.* a g, i és m jelzőkkel minden olyan naplósort eltalál, amely Error:, ERROR: vagy error: kezdetű, mert az m miatt a ^ az egyes sorok elején is illeszkedik.

Gyakori kérdések

Ugyanúgy fog működni a regexem Python, PHP vagy Java környezetben?

Nem feltétlenül. Ez az eszköz a JavaScript-motort használja. Az alapvető szintaxis közös, de a birtokos kvantorok, az atomi csoportok, a beágyazott jelzők (például (?i)) és egyes escape-szekvenciák csak más változatokban léteznek, és néhány eltérően viselkedik. Mindig tesztelje a célnyelvben.

Miért csak egy találatot talál?

A g (global) jelző ki van kapcsolva. Enélkül a JavaScript csak az első találatot adja vissza. Jelölje be a g-t, hogy mindet megtalálja.

Kell a perjeleket beírni a minta köré?

Nem. Csak a mintát adja meg, például \d+ a /\d+/g helyett, a jelzőket pedig a jelölőnégyzetekkel válassza ki. A JavaScript literál formája a találatok alatt látható, hogy kódba másolhassa.

Miért lett lassú az oldal a mintámtól?

Az egymásba ágyazott kvantorok, például az (a+)+ vagy a (.*)*, arra kényszeríthetik a motort, hogy exponenciális számú útvonalat próbáljon ki, ha nincs találat. Tegye a mintát konkrétabbá, például a .* helyett használja a [^,]* mintát, vagy használjon horgonyokat. A tesztelő a szöveget 100 000 karakterre korlátozza, hogy csökkentse a hatást.

Adatvédelem

A mintát és a szöveget kizárólag a böngészője dolgozza fel a JavaScript motorjával. Semmi nem kerül feltöltésre vagy tárolásra, és nem szerepel az analitikában.