Rychlá referenční příručka pro syntaxi regulárních výrazů

Regulárne výrazy, známe aj ako vzorové výrazy, sú textové vzory, ktoré sa bežne používajú na vyhľadávanie, nahrádzanie a manipuláciu s textom. V základnej forme sa skladá z písmen od a do z a niektorých špeciálnych metacharakterov. Aplikácia regulárnych výrazov je veľmi široká, pôvodne bola rozšírená v systémoch Unix a neskôr bola rozsiahlo použitá v mnohých jazykoch, ako sú Scala, PHP, C#, Java, C++, Objective-C, Perl, Swift, VBScript, Javascript, Ruby a Python. Učenie sa regulárnych výrazov v skutočnosti znamená učenie sa flexibilného logického myslenia, ktoré sa snaží dosiahnuť ovládanie reťazcov jednoduchými a rýchlymi metódami.
Regulárny znak Popis
\ Označuje nasledujúci znak ako špeciálny znak, alebo ako presný znak, alebo iba spätne odkazuje, alebo ako osemkový únikový znak. Napríklad, “n" zodpovedá znaku "n". "\n" zodpovedá novému riadku. "\\" zodpovedá "\" a "\(" zodpovedá "(".
^ Zodpovedá začiatku vstupného reťazca. Ak je nastavený atribút Multiline objektu RegExp, ^ zodpovedá aj pozíciám za "\n" alebo "\r".
$ Zodpovedá koncu vstupného reťazca. Ak je nastavený atribút Multiline objektu RegExp, $ zodpovedá aj pozíciám pred "\n" alebo "\r".
* Zodpovedá predchádzajúcemu subvýrazu 0-krát alebo viackrát. Napríklad, zo* môže zodpovedať "“z" alebo "zoo". * je ekvivalentné {0,}.
+ Zodpovedá predchádzajúcemu subvýrazu 1-krát alebo viackrát. Napríklad, “zo+" zodpovedá "zo" alebo "zoo", ale nezodpovedá "z". + je ekvivalentné {1,}.
? Zodpovedá predchádzajúcemu subvýrazu 0-krát alebo 1-krát. Napríklad, “do(es)?" môže zodpovedať "does" alebo "does" v "do". ? je ekvivalentné {0,1}.
{n} n je nezáporné celé číslo. Zodpovedá exaktne n-krát. Napríklad, “o{2}" nezodpovedá "o" v "Bob", ale zodpovedá dvom o v "food".
{n,} n je nezáporné celé číslo. Zodpovedá najmenej n-krát. Napríklad, “o{2,}" nezodpovedá "o" v "Bob", ale zodpovedá všetkým o v "foooood". "o{1,}" je ekvivalentné "o+", "o{0,}" je ekvivalentné "o*".
{n,m} m a n sú nezáporné celé čísla, pričom n<=m. Najmenej zodpovedá n-krát a najviac m-krát. Napríklad, “o{1,3}" zodpovedá prvým trom o v "fooooood". "o{0,1}" je ekvivalentné "o?". Poznámka: medzery nie sú povolené medzi čiarkou a dvoma číslami.
? Keď sa táto postava nachádza bezprostredne za akýmkoľvek iným kvantifikátorom (*, +, ?, {n}, {n,}, {n,m}), zápasová vzorka je nenásytná. Nenásytné módy zodpovedajú najmenšiemu možnému počtu znakov, zatiaľ čo predvolené hladné módy zodpovedajú čo najväčšiemu počtu znakov. Napríklad, pre reťazec “oooo", "o+?" zodpovedá jednému "o", zatiaľ čo "o+" zodpovedá všetkým "o".
. Zodpovedá akémukoľvek jednému znaku okrem “\n". Na zodpovedanie akéhokoľvek znaku vrátane "\n" klimatizované vzory môžu byť použité ako "(.|\n)".
(pattern) Zodpovedá pattern a získa tento zápas. Získaný zápas môže byť získaný z kolekcie Matches, v jazyku VBScript pomocou kolekcie SubMatches, v JScript pomocou atribútov $0…$9. Na zodpovedanie znaku okrúhlej zátvorky použite “\(" alebo "\)".
(?:pattern) Zodpovedá pattern, ale nezíska výsledok zápasu, inými slovami je to nezískaný zápas a nebude uložený na budúce použitie. Toto je užitočné, keď používate alebo znak “(|)" na kombináciu rôznych častí vzoru. Napríklad, "industr(?:y|ies)" je ostrejším vyjadrením než "industry|industries".
(?=pattern) Kladený zápas a nútený aspekt pred jeho začiatkom k vzoru, ktorý zodpovedá akémukoľvek zápasu. Ide o nezískaný zápas, čo znamená, že tento zápas nie je potrebný na neskoršie použitie. Napríklad, “Windows(?=95|98|NT|2000)" zodpovedá "Windows" v "Windows2000", ale nezodpovedá "Windows3.1" v "Windows". Prehľad nezabíja znaky, po akomkoľvek zápase začína hľadanie ďalšieho zápasu hneď po poslednom zápase, nie od znaku, ktorý obsahuje hľadanie.
(?!pattern) Zápasový zápas na začiatku každej sekvencie, ktorú môžeme vzorovať, a kde nezodpovedá pattern. Ide o nezískaný zápas, čo znamená, že tento zápas nie je potrebný na neskoršie použitie. Napríklad, “Windows(?!95|98|NT|2000)" zodpovedá "Windows3.1" v "Windows", ale nezodpovedá "Windows2000" v "Windows". Východný formát nezabíja znaky, po akomkoľvek zápase začína ihneď po poslednom zápase.
(?<=pattern) Obrátne kladené požiadavky, s presne opačným smerom. Napríklad: “(?<=95|98|NT|2000)Windows" zodpovedá"2000Windows" v reťazci "Windows", ale nezodpovedá "3.1Windows" v reťazci "Windows".
(?<!pattern) Obrátne zápasové schémy, ako kladené požiadavky nie sú prítomné. Napríklad, “(?<!95|98|NT|2000)Windows" zodpovedá "3.1Windows" v reťazci "Windows", ale nezodpovedá "2000Windows" v reťazci "Windows".
x|y Zodpovedá x alebo y. Napríklad, “z|food" môže zodpovedať "z" alebo "food". "(z|f)ood" zodpovedá ako "zood" alebo "food".
[xyz] Znaková sada. Zodpovedá akémukoľvek znaku, ktorý obsahuje. Napríklad, “[abc]" môže zodpovedať "plain" z "a".
[^xyz] Negatívna znakovná sada. Zodpovedá akémukoľvek znaku, ktorý nie je obsiahnutý. Napríklad, “[^abc]" môže zodpovedať "plain" z "p".
[a-z] Znakový rozsah. Zodpovedá akémukoľvek znaku v určenom rozsahu. Napríklad, “[a-z]" môže zodpovedať akémukoľvek dolnému písmenu znaku od "a" do "z".
[^a-z] Negatívny znakový rozsah. Zodpovedá akémukoľvek znaku, ktorý nie je v určenom rozsahu. Napríklad, “[^a-z]" môže zodpovedať akémukoľvek znaku, ktorý nie je v rozsahu "a" do "z".
\b Zodpovedá hranici slova, čo znamená pozíciu medzi slovom a medzerou. Napríklad, “er\b" môže zodpovedať "never" v "er", ale nezodpovedá "verb" v "er".
\B Zodpovedá ne-hračí pozícii. “er\B" sa môže zhodovať "verb" v "er", ale nezodpovedá "never" v "er".
\cx Zodpovedá riadiacemu znaku určenému x. Napríklad, \cM zodpovedá ovládaciemu M alebo znaku návratu. Hodnota x musí byť jedným z A-Z alebo a-z. V opačnom prípade xx bude spracovaná ako literárny znak "c".
\d Zodpovedá číselnému znaku. Ekvivalentné [0-9].
\D Zodpovedá nečíselnému znaku. Ekvivalentné [^0-9].
\f Zodpovedá znaku pre prechod na ďalšiu stranu. Ekvivalentné \x0c a \cL.
\n Zodpovedá znaku nového riadku. Ekvivalentné \x0a a \cJ.
\r Zodpovedá znaku návratu. Ekvivalentné \x0d a \cM.
\s Zodpovedá akémukoľvek prázdnemu znaku vrátane medzier, tabulátorov, znakov pre prechod na ďalšiu stranu a podobne. Ekvivalentné [ \f\n\r\t\v].
\S Zodpovedá akémukoľvek neprázdnému znaku. Ekvivalentné [^ \f\n\r\t\v].
\t Zodpovedá tabulátoru. Ekvivalentné \x09 a \cI.
\v Zodpovedá vertikálnemu tabulátoru. Ekvivalentné \x0b a \cK.
\w Zodpovedá akémukoľvek znaku slova vrátane podčiarkovníka. Ekvivalentné "[A-Za-z0-9_]".
\W Zodpovedá akémukoľvek ne-slovnému znaku. Ekvivalentné "[^A-Za-z0-9_]".
\xn Zodpovedá n, kde n je hexadecimálna úniková hodnota. Hexadecimálna úniková hodnota musí byť dvoch znakov dlhá. Napríklad, “\x41" zodpovedá "A". "\x041" je ekvivalentné "\x04&1". V regulárnych výrazoch môžu byť použité ASCII kódy.
\num Zodpovedá num, kde num je kladné celé číslo. Pre referenciu na získané zodpovedanie. Napríklad, “(.)\1" zodpovedá dvom po sebe idúcim rovnakým znakom.
\n Označuje osemkovú únikovú hodnotu alebo spätne odkazuje. Ak sa n predtým získalo aspoň n subvýrazov, n je spätný odkaz. Inak, ak je n osemkovým číslom (0-7), n je osemková úniková hodnota.
\nm Označuje osemkovú únikovú hodnotu alebo spätný odkaz. Ak sa nm predtým získalo aspoň nm subvýrazov, nm je spätný odkaz. Ak sa nm získalo aspoň n krát, n má spätný odkaz, ktorý nasleduje za literom m. Ak predchádzajúce podmienky nie sú splnené a n a m sú oba osemkové čísla (0-7), nm sa zhoduje na hodnotu osemkovej únikovej hodnoty nm.
\nml Ak je n osemkovým číslom (0-3) a m a l sú osemkové čísla (0-7), zodpovedá osemkovej únikovej hodnoty nml.
\un Zodpovedá n, kde n je Unicode znak reprezentovaný štyrmi hexadecimálnymi číslicami. Napríklad, \u00A9 zodpovedá symbolu autorského práva (©).
Bežné regulárne výrazy
Používateľské meno /^[a-z0-9_-]{3,16}$/
Heslo /^[a-z0-9_-]{6,18}$/
Heslo 2 (?=^.{8,}$)(?=.*\d)(?=.*\W+)(?=.*[A-Z])(?=.*[a-z])(?!.*\n).*$ (obsahujúce čísla/väčšie písmená/malé písmená/šírky znakov, všetky štyri musia byť, viac ako 8 znakov)
Hexadecimálna 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]+)+$/ alebo \w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
URL /^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/ alebo [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]?)$/ alebo ((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+\/>)$/ alebo <(.*)(.*)>.*<\/\1>|<(.*) \/>
Odstrániť kód\\komentáre (?<!http:|\S)//.*$
Zodpovedať dvojbytovým znakom (vrátane čínskych znakov) [^\x00-\xff]
Čínske znaky (znaky) [\u4e00-\u9fa5]
Rozsah čínskych znakov v Unicode kóde /^[\u2E80-\u9FFF]+$/
Čínske a plné interpunkčné znaky (znaky) [\u3000-\u301e\ufe10-\ufe19\ufe30-\ufe44\ufe50-\ufe6b\uff01-\uffee]
Dátum (rok-mesiac-deň) (\d{4}|\d{2})-((0?([1-9]))|(1[1|2]))-((0?[1-9])|([12]([1-9]))|(3[0|1]))
Dátum (mesiac/deň/rok) ((0?[1-9]{1})|(1[1|2]))/(0?[1-9]|([12][1-9])|(3[0|1]))/(\d{4}|\d{2})
Čas (hodiny:minúty, 24-hodinový formát) ((1|0?)[0-9]|2[0-3]):([0-5][0-9])
Pevná telefónna linka v Číne (\d{4}-|\d{3}-)?(\d{8}|\d{7})
Mobilný telefón v Číne 1\d{10}
PSČ v Číne [1-9]\d{5}
Identifikačné číslo občana v Číne (15 alebo 18 číslic) \d{15}(\d\d[0-9xX])?
Nezáporné celé číslo (kladné číslo alebo nula) \d+
Kladné celé číslo [0-9]*[1-9][0-9]*
Záporné celé číslo -[0-9]*[1-9][0-9]*
Celé číslo -?\d+
Desatinné číslo (-?\d+)(\.\d+)?
Prázdny riadok \n\s*\r alebo \n\n(editplus) alebo ^[\s\S ]*\n
QQ číslo [1-9]\d{4,}
Slová neobsahujúce abc \b((?!abc)\w)+\b
Zodpovedá prázdnym znakom na začiatku a na konci ^\s*|\s*$
Často používané úpravy
Tu je niekoľko náhrad pre špeciálne čínske 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>

Rýchly prehľad syntaxe regulárnych výrazov - bežné regulárne výrazy a zručnosti

Regulárne výrazy sú silným nástrojom na spracovanie textu, táto stránka vám poskytuje bežný rýchly prehľad syntaxe regulárnych výrazov na pomoc pri rýchlom porozumení základnej syntaxe regulárnych výrazov, modifikátorom, subvýrazom, hladným a nenásytným spôsobom atď.

Základná syntax regulárnych výrazov

Regulárne výrazy sa používajú na opis vzorov reťazcov, bežné základné syntaxe zahŕňajú:

Bežné modifikátory regulárnych výrazov

Modifikátory regulárnych výrazov sa používajú na zmenu pravidiel zodpovedania regulárnych výrazov, bežné modifikátory zahŕňajú:

Hladný a nenásytný mód

V regulárnych výrazoch sú kvantifikátory predvolene hladné, budú zodpovedať čo najväčšiemu počtu znakov. Nenásytný mód sa používa pridaním ? po kvantifikátore, tu je príklad:

Subvýrazy a skupiny

Subvýrazy v regulárnych výrazoch sú definované pomocou zátvoriek ( ( ) ), často slúžia na extrakciu častí zodpovedaní. Skupiny sa vykonávajú pomocou symbolu "|". Napríklad:

Rýchly dotaz na regulárne výrazy

Tu sú rýchle dotazy pre bežné regulárne výrazy:

Funkcia Regulárny výraz
Zodpovedať číslam \d
Zodpovedať nečíslam \D
Zodpovedať písmenám [a-zA-Z]
Zodpovedať akémukoľvek znaku .
Zodpovedať prázdnym znakom \s

Aplikácie regulárnych výrazov

Regulárne výrazy sa široko používajú v nasledujúcich scénároch:

Tipy na učenie regulárnych výrazov

Okamžite využite náš rýchly prehľad syntaxe regulárnych výrazov, aby ste efektívne písali regulárne výrazy a zlepšovali schopnosti spracovania textu!

Vaša stopa:
Vyberte jazyk