Rychlá nápověda pro syntaxi regulárních výrazů

Regulární výraz, známý také jako vzorový výraz, je textový vzor, který se obvykle používá k prohledávání, nahrazování a úpravě textu. Hlavně se skládá z písmen a-z a několika speciálních metakarakterů. Použití regulárních výrazů je velmi široké, poprvé byly popularizovány systémem Unix a později se hojně používají v jazycích Scala, PHP, C#, Java, C++, Objective-C, Perl, Swift, VBScript, Javascript, Ruby a Python atd. Učení se regulárním výrazům ve skutečnosti znamená učení se velmi flexibilnímu logickému myšlení, které vám umožňuje řídit řetězce pomocí jednoduchých a rychlých metod.
Regulární znak Popis
\ Označuje následující znak jako speciální znak, nebo jako doslovný znak, nebo jako zpětnou reference, nebo jako osmičkový únikový znak. Například, “n" odpovídá znaku "n". "\n" odpovídá jednomu novému řádku. Sekvence "\\" odpovídá "\", zatímco "\(" odpovídá "(".
^ Odpovídá začátku vstupního řetězce. Pokud je nastavená vlastnost Multiline objektu RegExp, ^ také odpovídá místům za “\n" nebo "\r".
$ Odpovídá konci vstupního řetězce. Pokud je nastavená vlastnost Multiline objektu RegExp, $ také odpovídá místům před “\n" nebo "\r".
* Odpovídá předchozímu podvýrazu nula nebo vícekrát. Například, zo* může odpovídat “z" a "zoo". * je ekvivalentní {0,}.
+ Odpovídá předchozímu podvýrazu jednou nebo vícekrát. Například, “zo+" může odpovídat "zo" a "zoo", ale nemůže odpovídat "z". + je ekvivalentní {1,}.
? Odpovídá předchozímu podvýrazu nula nebo jednou. Například, “do(es)?" může odpovídat "does" nebo "does" s "do". ? je ekvivalentní {0,1}.
{n} n je nezáporné celé číslo. Odpovídá přesně nkrát. Například, “o{2}" nemůže odpovídat "Bob" obsahující "o", ale může odpovídat "food" obsahujícím oba "o".
{n,} n je nezáporné celé číslo. Odpovídá alespoň nkrát. Například, “o{2,}" nemůže odpovídat "Bob" obsahující "o", ale může odpovídat "foooood" obsahujícím všechny "o". "o{1,}" je ekvivalentní "o+". "o{0,}" je ekvivalentní "o*".
{n,m} m a n jsou nezáporná celá čísla, kde n<=m. Odpovídá alespoň nkrát a nejvýše mkrát. Například, “o{1,3}" odpovídá až třem "o" v "fooooood". "o{0,1}" je ekvivalentní "o?". Uvědomte si, že mezi čárkou a oběma čísly nesmí být mezera.
? Když se tento znak nachází ihned za jakýmkoli jiným kvantifikátorem (*, +, ?, {n}, {n,}, {n,m}), vzor je nenasytný. Nenasytný způsob odpovídá co nejméně znakům, zatímco defaultní(nasytný) způsob odpovídá co nejvíce znakům. Například, pro řetězec “oooo", "o+?" odpovídá jedinému "o", zatímco "o+" odpovídá všem "o".
. Odpovídá jakémukoli jedinému znaku kromě “\n". Chcete-li odpovídat jakýmkoli znakům včetně "\n", použijte vzor jako "(.|\n)".
(pattern) Odpovídá patternu a získává tuto shodu. Získaná shoda může být získána z vytvořené kolekce Matches, v VBScriptu se používá kolekce SubMatches, v JScriptu se používají atributy $0…$9. Chcete-li odpovídat znakům závorek, použijte “\(" nebo "\)".
(?:pattern) Odpovídá patternu, ale nezískává shodu, což znamená, že to je neuchovávající shoda, která se neukládá k budoucímu použití. Toto je užitečné při kombinaci různých částí vzoru pomocí znaku nebo “(|)". Například "industr(?:y|ies)" je stručnější výraz než "industry|industries".
(?=pattern) Potvrzující předzápis, odpovídající jakémukoli řetězci, jehož počátek odpovídá patternu. Toto je neuchovávající shoda, což znamená, že tato shoda nevyžaduje získání k budoucímu použití. Například, “Windows(?=95|98|NT|2000)" může odpovídat "Windows2000" obsahujícím "Windows", ale nemůže odpovídat "Windows3.1" s "Windows". Předzápis nezabírá znaky, což znamená, že po shodě začíná nový hledací proces okamžitě za poslední shodou, nikoli za znaky, které zahrnují předzápis.
(?!pattern) Potvrzující negativní předzápis, odpovídající jakémukoli řetězci, jehož počátek neodpovídá patternu. Toto je neuchovávající shoda, což znamená, že tato shoda nevyžaduje získání k budoucímu použití. Například “Windows(?!95|98|NT|2000)" může odpovídat "Windows3.1" obsahujícím "Windows", ale nemůže odpovídat "Windows2000" obsahujícím "Windows". Předzápis nezabírá znaky, což znamená, že po shodě začíná nový hledací proces okamžitě za poslední shodou, nikoli za znaky, které zahrnují předzápis.
(?<=pattern) Obrácený potvrzující předzápis, obdobný jako potvrzující předzápis, pouze v opačném směru. Například “(?<=95|98|NT|2000)Windows" může odpovídat "2000Windows" obsahujícím "Windows", ale nemůže odpovídat "3.1Windows" s "Windows".
(?<!pattern) Obrácený negativní předzápis, obdobný jako potvrzující negativní předzápis, pouze v opačném směru. Například “(?<!95|98|NT|2000)Windows" může odpovídat "3.1Windows" obsahujícím "Windows", ale nemůže odpovídat "2000Windows" obsahujícím "Windows".
x|y Odpovídá x nebo y. Například, “z|food" může odpovídat "z" nebo "food". "(z|f)ood" pak odpovídá "zood" nebo "food".
[xyz] Známková sada. Odpovídá jakémukoli znaku obsaženému mezi těmito znaky. Například, “[abc]" může odpovídat "plain" obsahujícím "a".
[^xyz] Negativní sada znaků. Odpovídá jakémukoli znaku, který není obsažen. Například, “[^abc]" může odpovídat "plain" obsahujícím "p".
[a-z] Známkový rozsah. Odpovídá jakémukoli znaku v daném rozsahu. Například, “[a-z]" může odpovídat jakémukoli malému písmenu v rozmezí od "a" do "z".
[^a-z] Negativní rozsah znaků. Odpovídá jakémukoli znaku, který není v daném rozsahu. Například, “[^a-z]" může odpovídat jakémukoli znaku mimo rozsah "a" až "z".
\b Odpovídá hranici slova, což znamená místo mezi slovem a mezerou. Například “er\b" může odpovídat "never" obsahujícím "er", ale nemůže odpovídat "verb" obsahujícím "er".
\B Odpovídá ne-hranici slova. “er\B" může odpovídat "verb" obsahujícím "er", ale nemůže odpovídat "never" obsahujícím "er".
\cx Odpovídá ovládacímu znaku definovanému znakem x. Například, \cM odpovídá ovládacímu znaku M nebo návratovému znaku. Hodnota x musí být jedno z A-Z nebo a-z. Jinak bude c považováno jako doslovný znak “c".
\d Odpovídá číslici. Ekvivalentní [0-9].
\D Odpovídá netřídící znak. Ekvivalentní [^0-9].
\f Odpovídá znakům pro nový odkaz. Ekvivalentní \x0c a \cL.
\n Odpovídá novému řádku. Ekvivalentní \x0a a \cJ.
\r Odpovídá návratovému znaku. Ekvivalentní \x0d a \cM.
\s Odpovídá jakémukoli znaku bílého místa, včetně mezer, tabulátorů, znaků nového stránky atd. Ekvivalentní [ \f\n\r\t\v].
\S Odpovídá jakémukoli znaku, který není bílým místem. Ekvivalentní [^ \f\n\r\t\v].
\t Odpovídá tabulátoru. Ekvivalentní \x09 a \cI.
\v Odpovídá vertikálnímu tabulátoru. Ekvivalentní \x0b a \cK.
\w Odpovídá jakémukoli znaku slova, včetně podtržení. Ekvivalentní “[A-Za-z0-9_]".
\W Odpovídá jakémukoli znaku, který není znakem slova. Ekvivalentní “[^A-Za-z0-9_]".
\xn Odpovídá n, kde n je hexadecimální úniková hodnota. Hexadecimální úniková hodnota musí sestávat z přesně dvou číslic. Například, “\x41" odpovídá "A". "\x041" odpovídá "\x04&1". U regulárních výrazů lze použít ASCII kódování.
\num Odpovídá num, kde num je kladné celé číslo. Odkazuje na získanou shodu. Například, “(.)\1" odpovídá dvěma po sobě jdoucím stejným znakům.
\n Označuje osmičkovou únikovou hodnotu nebo zpětnou referenci. Pokud je n alespoň během n získaných podvýrazů, pak n je zpětná reference. Pokud je n osmičková cifra (0-7), pak n je osmičková úniková hodnota.
\nm Označuje osmičkovou únikovou hodnotu nebo zpětnou referenci. Pokud je nm alespoň během nm získaných podvýrazů, pak nm je zpětná reference. Pokud je nm alespoň během n získaných, pak n je zpětná reference s textem m. Pokud nejsou splněny žádné z předchozích podmínek, pokud jsou n a m obě osmičková čísla (0-7), pak nm odpovídá osmičkové únikové hodnotě nm.
\nml Pokud n je osmičková číslice (0-3) a m a l jsou obě osmičkové číslice (0-7), pak odpovídá osmičkové únikové hodnotě nml.
\un Odpovídá n, kde n je Unicode znak reprezentován čtyřmi hexadecimálními číslicemi. Například, \u00A9 odpovídá symbolu autorských práv (©).
Běžně používané regulární výrazy
Uživatelské jméno /^[a-z0-9_-]{3,16}$/
Heslo /^[a-z0-9_-]{6,18}$/
Heslo 2 (?=^.{8,}$)(?=.*\d)(?=.*\W+)(?=.*[A-Z])(?=.*[a-z])(?!.*\n).*$ (složeno z číslic/velkých písmen/malých písmen/rozlišovacích znaků, všechny čtyři musí být přítomny, více než 8 znaků)
Hexadecimální hodnota /^#?([a-f0-9]{6}|[a-f0-9]{3})$/
E-mail /^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/
/^[a-z\d]+(\.[a-z\d]+)*@([\da-z](-[\da-z])?)+(\.{1,2}[a-z]+)+$/ nebo \w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
URL /^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/ nebo [a-zA-z]+://[^\s]*
IP adresa /((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)/
/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/ nebo ((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)
HTML tagy /^<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s+\/>)$/ nebo <(.*)(.*)>.*<\/\1>|<(.*) \/>
Odstranit kód\\komentáře (?<!http:|\S)//.*$
Zatímco identifikátor dvojitého bajtu (včetně čínských znaků) [^\x00-\xff]
Čínské znaky (znaky) [\u4e00-\u9fa5]
Rozsah čínských znaků v kodování Unicode /^[\u2E80-\u9FFF]+$/
Čínské znaky a plné interpunkční znaky (znaky) [\u3000-\u301e\ufe10-\ufe19\ufe30-\ufe44\ufe50-\ufe6b\uff01-\uffee]
Datum (rok-měsíc-den) (\d{4}|\d{2})-((0?([1-9]))|(1[1|2]))-((0?[1-9])|([12]([1-9]))|(3[0|1]))
Datum (měsíc/den/rok) ((0?[1-9]{1})|(1[1|2]))/(0?[1-9]|([12][1-9])|(3[0|1]))/(\d{4}|\d{2})
Čas (hodina:minuta, 24hodinový formát) ((1|0?)[0-9]|2[0-3]):([0-5][0-9])
Pevná telefonní čísla v Číně (\d{4}-|\d{3}-)?(\d{8}|\d{7})
Mobilní telefonní čísla v Číně 1\d{10}
PSČ v Číně [1-9]\d{5}
Čínské identifikační číslo (15 nebo 18 číslic) \d{15}(\d\d[0-9xX])?
Nezáporné celé číslo (kladné číslo nebo nula) \d+
Kladné celé číslo [0-9]*[1-9][0-9]*
Záporné celé číslo -[0-9]*[1-9][0-9]*
Celé číslo -?\d+
Desetinné číslo (-?\d+)(\.\d+)?
Prázdné řádky \n\s*\r nebo \n\n(editplus) nebo ^[\s\S ]*\n
QQ číslo [1-9]\d{4,}
Slova, která neobsahují abc \b((?!abc)\w)+\b
Odpovídá počátečním a koncovým mezerám ^\s*|\s*$
Úpravy často používané
Následuje několik výměn pro speciální čínské znaky (editplus)
^[0-9].*\n
^[^第].*\n
^[习题].*\n
^[\s\S ]*\n
^[0-9]*\.
^[\s\S ]*\n
<p[^<>*]>
href="javascript:if\(confirm\('(.*?)'\)\)window\.location='(.*?)'"
<span style=".[^"]*rgb\(255,255,255\)">.[^<>]*</span>
<DIV class=xs0>[\s\S]*?</DIV>

Rychlý přehled syntaxe regulárních výrazů - Běžně používané tipy a syntaxe

Regulární výrazy jsou silným nástrojem pro zpracování textu a tato stránka vám poskytuje rychlý přehled syntaxe regulárních výrazů, který vám pomůže rychle porozumět základní syntaxi regulárních výrazů, modifierům, podvýrazům, nenasytným a nasytným režimům atd.

Základní syntaxe regulárních výrazů

Regulární výrazy popisují pravidla pro vzory řetězců a běžná základní syntaxe zahrnuje:

Běžně používané modifikátory regulárního výrazu

Modifikátory regulárního výrazu se používají k změně pravidel shody v regulárních výrazech, běžně používané modifikátory zahrnují:

Nasytné a nenasytné režimy

V regulárních výrazech se kvantifikátory ve výchozím nastavení chovají jako nasytné, což znamená, že se pokusí odpovídat co nejvíce znaků. Nenasytný režim se používá přidáním ? za kvantifikátor, jak je znázorněno níže:

Podvýrazy a skupiny

Podvýrazy v regulárních výrazech se definují pomocí závorek ( ( ) ), často se používají k extrakci shodných částí. Skupiny se tvoří pomocí znaku “|”. Například:

Rychlé vyhledávání regulárních výrazů

Následuje rychlé vyhledávání běžně používaných regulárních výrazů:

Funkce Regulární výraz
Odpovídá číslům \d
Odpovídá ne-číslům \D
Odpovídá písmenům [a-zA-Z]
Odpovídá jakémukoli znaku .
Odpovídá znakům bílého místa \s

Scény použití regulárních výrazů

Regulární výrazy se široce používají v následujících scénářích:

Tipy pro učení se regulárním výrazům

Okamžitě využijte náš rychlý přehled syntaxe regulárních výrazů, abyste zefektivnili psaní regulárních výrazů a zvýšili své schopnosti zpracování textu!

Vaše návštěvy:
Vybrat jazyk