Regex Cheat Sheet/Basics
Regulární výrazy (regex nebo regexp) jsou velmi užitečným nástrojem k identifikaci konkrétních vzorů v jakémkoli textu, což pomáhá extrahovat informace bez ohledu na formát textu.
Regex lze použít k ověřování vstupů, odstraňování webových stránek, hledání konkrétních řetězců v dokumentech, ověřování syntaxe pro kompilátory a mnoho dalších příkladů.
Regex je široce používán ve více programovacích jazycích používajících téměř stejnou syntaxi, takže tento článek předstírá, že ukazuje základní operátory regulárních výrazů.
Následující části ukáží různé operátory používané pro regulární výrazy a některé příklady. Na této stránce můžete také otestovat své regulární výrazy s jejich vysvětlením.
Kotvy
Znaky | Použít |
---|---|
^ | Označuje začátek řetězce. Bude odpovídat pouze řetězci, který začíná znakem (znaky), který následuje |
$ | Označuje konec řetězce. To bude odpovídat libovolnému řetězci, který končí znakem (znaky) před symbolem „$“ |
abc | Odpovídá libovolnému řetězci, který obsahuje sekvenci znaků „abc“ |
Některé příklady jsou:
Příklad | Popis | Příklady shodných řetězců |
---|---|---|
^A | Odpovídá všem řetězcům, které začínají na A | “A n jablko je na stromě“, „A nová restaurace” |
end$ | Odpovídá řetězci, který končí posloupností znaků „end“ | „konec “, „Pojďme tokončíme ” |
^Ahoj světe$ | Přesně se shoduje s řetězcem „Ahoj světe“ | “Ahoj světe ” |
objednávka | Odpovídá libovolnému řetězci, který obsahuje text ‚objednávka‘ | „Moje objednávka číslo je 54” |
Kvantifikátory
Kvantifikátory se používají k vyjádření časů, kdy chceme, aby se předchozí znak nebo skupina znaků objevila v naší shodě.
Znaky | Použít |
---|---|
* | Označuje nulu nebo více |
+ | Označuje jeden nebo více |
? | Označuje nulu nebo jedničku |
x{n} | Slouží k určení, kolikrát („n“) se má objevit předchozí znak („x“) |
x{n, } | Používá se k určení minimálního počtu (‚n‘), kdy se má objevit předchozí znak (‘x‘) |
x{n, m} | Slouží k určení minimálního („n“) a maximálního („m“), kolikrát by se měl objevit předchozí znak („x“) |
Některé příklady jsou:
Příklad | Popis | Příklady shodných řetězců |
---|---|---|
ahoj!* | Odpovídá libovolnému řetězci „ahoj“, po kterém následuje nula nebo více znaků „!“ | “ahoj “, „ahoj! “, ahoj!! |
ahoj!+ | Odpovídá libovolnému řetězci „ahoj“, po kterém následuje jeden nebo více znaků „!“ | “ahoj! “, „ahoj!! ” |
ahoj!? | Odpovídá libovolnému řetězci „ahoj“, po kterém následuje nula nebo jeden znak „!“ | “ahoj “, „ahoj! ” |
(ha){2,4} | Odpovídá libovolnému řetězci, který dvakrát až čtyřikrát opakuje skupinu znaků „ha“ | “haha “, „hahaha “, „hahahaha ” |
Operátor NEBO
Znaky | Použít |
---|---|
a|b | Odpovídá libovolnému řetězci, který obsahuje „a“ nebo „b“ |
[ ] | Používá se k reprezentaci seznamu, takže odpovídá řetězci, který obsahuje jeden ze znaků v seznamu |
Některé příklady jsou:
Příklad | Popis | Příklady shodných řetězců |
---|---|---|
se(a|e) | Odpovídá libovolnému řetězci, který obsahuje text „se“ následovaný „a“ nebo „e“ | “viz “, „moře ” |
a[bcd] | Odpovídá libovolnému řetězci, který obsahuje „a“ následované „b“, „c“ nebo „d“ | “ab “, „ac “, „reklama ” |
Třídy znaků
Operátory tříd znaků vám umožňují porovnat znaky v rámci kategorie (třídy). Tyto operátory nabízejí své negace, které jsou stejné jako normální operátor, ale jsou napsány velkými písmeny.
Znaky | Použít |
---|---|
\d | Odpovídá jedné číslici znak |
\w | Odpovídá jedinému slovu znak (písmena, čísla a podtržítko) |
\s | Odpovídá jednomu bílému místu znak, včetně tabulátorů a zalomení řádků |
\D | Odpovídá jedné jiné číslici znak |
\W | Odpovídá jednomu jinému slovu znak (písmena, čísla a podtržítko) |
\S | Odpovídá jednomu nebílému místu znak, včetně tabulátorů a zalomení řádků |
. | Odpovídá libovolnému jednotlivému znaku |
Příznaky
Regex obvykle používá tvar /pattern/
. Nakonec můžeme použít následující příznaky:
Příznak | Popis |
---|---|
g | globální flag se používá k vyhledání všech jednotlivých shod uvnitř řetězce. Pokud není použit, výraz se vrátí po první shodě |
m | víceřádkový příznak umožňuje použít ^ a $ jako začátek a konec řádku, nikoli začátek a konec řetězce, který může obsahovat více řádků |
i | Necitlivé flag nerozlišuje v regulárním výrazu malá a velká písmena |
Závěry
Regex má mnoho využití. Jednoduché operátory popsané v tomto článku můžete kombinovat a vytvářet složité vyhledávání vzorů. Jedním příkladem je ověření e-mailové adresy, což lze provést pomocí následujícího regulárního výrazu:
^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$
Tento příklad odpovídá úplnému řetězci, pro který hledá vzor v následujícím pořadí:
[\w-\.]+
:kombinace jednoho nebo více slovních znaků, pomlček nebo teček@
:symbol @([\w-]+\.)+
:jedna nebo více kombinací jednoho nebo více slovních znaků nebo pomlček zakončených tečkou (pro domény a subdomény v e-mailu, jako je email.rackspace.)[\w-]{2,4}
:kombinace 2, 3 nebo 4 slovních znaků nebo pomlček pro koncovou část e-mailu (com)
Stejně jako tento příklad existuje mnoho dalších, které lze snadno implementovat pro různé účely.