raatools/

Regex tesztelő

Teszteljen regex mintákat élő egyezéssel, flagekkel és részletekkel.

Mik azok a reguláris kifejezések?

A reguláris kifejezések (regex vagy regexp) szövegekben karakterkombinációk megtalálására szolgáló minták. A programozás egyik legerőteljesebb eszköze szövegkereséshez, érvényesítéshez, kinyeréshez és átalakításhoz. Minden jelentős programozási nyelv támogatja a reguláris kifejezéseket, és nélkülözhetetlenek az űrlap-érvényesítéshez, a naplófájlok elemzéséhez és az adattisztításhoz.

Egy regex-minta speciális szintaxissal írja le a karakterláncok egy halmazát. Az egyszerű minták szó szerinti szöveget illesztenek, míg a metakarakterek, mint a . (bármely karakter), a * (nulla vagy több) és a + (egy vagy több) rugalmasságot adnak. A zárójelekkel való csoportosítás, a | váltakozás és a [] karakterosztályok szinte bármilyen szövegmintához pontos illesztési szabályokat hoznak létre.

A regex tesztelő használata

Adja meg a reguláris kifejezés mintát a mintamezőben, válassza ki a kívánt jelzőket (g, i, m, s), és illessze be a tesztelendő szöveget. Az eszköz valós időben kiemeli az összes egyezést, és minden egyezés esetén megjeleníti a rögzítési csoportokat. Ezzel fejleszthet és hibakereshet regex-mintákat, mielőtt beágyazná őket a kódjába.

Általános regex-minták

  • E-mail-cím: ^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$ – egyezik a szabványos e-mail-formátumokkal.
  • URL-ek: https?://\\S+ – a http-vel vagy https-szel kezdődő URL-ekkel egyezik.
  • IPv4-cím: a szabványos pontozott decimális formátumnak felel meg (pl. 192.168.1.1) számjegy-kvantorok alkalmazásával.
  • Dátumok: ÉÉÉÉ-HH-NN formátumú dátumokhoz illeszkedik, négyjegyű évet és kétjegyű hónapot és napot alkalmazva.
  • Nagy kezdőbetűs szavak: [A-Z][a-z]+ – nagybetűvel kezdődő szavakkal egyezik.

Regex-jelzők magyarázata

  • g: g (Globális): A szöveg összes egyezését megtalálja, nem csak az elsőt.
  • i: i (Kis-/nagybetű-független): A minta illeszkedik a levél esetétől függetlenül.
  • m: m (Többsoros): A ^ és $ egyezik minden sor elejével és végével, nem csak a teljes karakterlánc elején és végén.
  • s: s (Pontall): A . metakarakter újsor-karakterekkel is egyezik.

Rögzítési csoportok

A zárójelek () rögzítési csoportokat hoznak létre, amelyek az egyezés egyes részeit nyerik ki. Minden csoport 1-től számozódik. Például a (\\w+)@(\\w+\\.\\w+) minta a \"user@example.com\" szövegre alkalmazva az 1. csoportba rögzíti a \"user\"-t, a 2. csoportba az \"example.com\"-ot. A (?<name>...) szintaxissal elnevezett csoportok olvashatóbbá teszik az összetett mintákat.

Általános regex-hibák

A speciális karakterek escape-elésének elfelejtése a leggyakoribb hiba. Az olyan karaktereknek, mint a . + * ? ( ) [ ] ^ $ | és a kapcsos zárójelek, speciális jelentésük van a regex-ben, és fordított törtvonallal kell escape-elni őket, ha szó szerint kell illeszteni őket. Például egy pont illesztéséhez backslash-pont szükséges, nem egyszerűen egy pont.

Túlzottan mohó minták írása egy másik gyakori probléma. A .* kvantifikátor a lehető legtöbb szövegre illeszkedik, ami sokkal többet rögzíthet a szándékoltnál. A .*? lusta kvantifikátorral a lehető legkevesebbet illesztheti, vagy konkrétabb mintákat alkalmazhat, például [^>]* a .* helyett strukturált szöveg elemzésekor.

Gyakran ismételt kérdések

Ugyanazok a regex-minták minden programozási nyelvben?

Az alapszintaxis hasonló, de vannak különbségek. A JavaScript, a Python, a Java és a .NET mindegyikének kissé eltérő funkciói és szintaxisa van a fejlettebb konstrukciókhoz, például a visszatekintő állításokhoz, az elnevezett csoportokhoz és az Unicode-támogatáshoz. Ez az eszköz JavaScript regex-et használ, amely a webfejlesztés szabványa.

Hogyan tanulhatom meg a reguláris kifejezéseket?

Kezdjen egyszerű mintákkal, és fokozatosan bővítse azokat. Először tanulja meg az alapvető metakaraktereket (. * + ? ^ $), a karakterosztályokat ([a-z], \\d, \\w) és a kvantifikátorokat. Utána térjen rá a csoportosításra, a váltakozásra és az előretekintőkre. Valós feladatokon gyakoroljon, például e-mailek érvényesítése, naplófájlok elemzése vagy adatok kinyerése HTML-ből.