Säännöllisten lausekkeiden syntaksin pikaopas

Säännölliset lausekkeet, myös tunnetut nimellä säännötilausekkeet, ovat tekstimallin työkalu, jota käytetään yleisesti tekstin etsimiseen, korvaamiseen ja hallintaan. Ne sisältävät yleensä a–z-kirjaimet ja joitakin erityisiä metamerkkejä. Säännöllisten lausekkeiden soveltamisala on erittäin laaja, ja ne yleistyivät alun perin Unixissa ja myöhemmin laajalti Scala, PHP, C#, Java, C++, Objective-C, Perl, Swift, VBScript, Javascript, Ruby ja Python -kielissä. Säännöllisten lausekkeiden oppiminen on itse asiassa oppimista erittäin joustavalle loogiselle ajattelulle, jossa yhdistetään yksinkertaiset ja nopeat menetelmät merkkijonon hallintaan.
Säännöllinen merkki Kuvaus
\ Merkitsee seuraavaa merkkiä erityiseksi merkiksi, alkuperäiseksi merkiksi, taakse viittaavaksi merkiksi tai oktaalimuotoiseksi merkiksi. Esimerkiksi "“n" vastaa merkkiä "n", "\n" vastaa rivinvaihtomerkkiä. Merkkijono "\\" vastaa "\", kun taas "\(" vastaa "(".
^ Vastaavat syötteen merkkijonon alkuaseme. Jos RegExp-objektin Multiline-ominaisuus asetetaan, ^ vastaa myös "“\n" tai "\r" jälkeen olevia asemia.
$ Vastaavat syötteen merkkijonon lopetuspistettä. Jos RegExp-objektin Multiline-ominaisuus asetetaan, $ vastaa myös "“\n" tai "\r" ennen olevia asemia.
* Vastaavat edeltävää alilausetta nolla tai useita kertoja. Esimerkiksi, zo* voi vastata "“z" ja "zoo". * on yhtä kuin {0,}.
+ Vastaavat edeltävää alilausetta kerran tai useita kertoja. Esimerkiksi "“zo+" voi vastata "zo" ja "zoo" mutta ei voi vastata "z". + on yhtä kuin {1,}.
? Vastaavat edeltävää alilausetta nolla tai kerran. Esimerkiksi "“do(es)?" voi vastata "does" tai "does" sisältävän "do". ? on yhtä kuin {0,1}.
{n} n on ei-negatiivinen kokonaisluku. Vastaavat määritettyjä n kertoja. Esimerkiksi, "“o{2}" ei voi vastata "Bob" -sanan "o", mutta se voi vastata "food" -sanan kahta o:ta.
{n,} n on ei-negatiivinen kokonaisluku. Vastaavat vähintään n kertaa. Esimerkiksi "“o{2,}" ei voi vastata "Bob" -sanan "o", mutta se voi vastata "foooood" -sanan kaikki o:ta. "o{1,}" on yhtä kuin "o+". "o{0,}" on yhtä kuin "o*".
{n,m} m ja n ovat molemmat ei-negatiivisia kokonaislukuja, joissa n<=m. Vähintään n kertaa ja enintään m kertaa. Esimerkiksi "“o{1,3}" vastaa "fooooood" -sanan kolmea ensimmäistä o:ta. "o{0,1}" on yhtä kuin "o?". Huomaa, että pilkun ja kahden numeron välillä ei saa olla tyhjää tilaa.
? Kun tämä merkki seuraa mitä tahansa muuta rajoittinta (*,,+,,?,,{n}、、{n,}、、{n,m}) aiemmin, vastaavat mallit ovat ei-ahnaita. Ei-ahnaat mallit vastaavat mahdollisimman vähän etsimillään merkkijonoilla, kun taas oletusyksikkö ahnas malli vastaa mahdollisimman paljon etsimillään merkkijonoilla. Esimerkiksi merkkijonolle "“oooo" "o+?" vastaa yksittäistä "o", kun taas "o+" vastaa kaikkia "o".
. Vastaavat mitä tahansa yksittäistä merkkiä, paitsi "“\n". Jotta voit vastata kaikkiin merkkeihin, mukaan lukien "\n", käytä mallia kuten "(.|\n)".
(pattern) Vastaavat mallia ja saavat tämän vastauksen. Saatu vastaus voidaan saada syntyneestä Matches-kokoelmasta, VBScriptissä voidaan käyttää SubMatches-kokoelmaa ja JScriptissä $0…$9-ominaisuutta. Jotta voit vastata sulkujen merkkijonolle, käytä "“\(" tai "\)".
(?:pattern) Vastaavat mallia mutta eivät pidä tiskin tuloksia, toisin sanoen tämä on ei-käytettävä vastaus. Tämä on hyödyllistä yhdistettäessä useita osia mallia käyttämällä tai-merkkiä "“(|)". Esimerkiksi "industr(?:y|ies)" on lyhyempi ilmaisu kuin "industry|industries".
(?=pattern) Positiivinen etukäteen tarkistus, joka vastaaistuu missä tahansa yhtälön mallissa olevassa merkkijonossa. Tämä on ei-käytettävä vastauksena, toisin sanoen vastaus ei tarvitse pitää julkaistavaksi tulevaa käyttöä varten. Esimerkiksi "“Windows(?=95|98|NT|2000)" voi vastata "Windows2000" -sanan "Windows", mutta ei voi vastata "Windows3.1" -sanan "Windows". Etukäteen tarkistus ei kuluta merkkejä, sillä se aloittaa seuraavana etsimisen merkkijonon tässä matchin jälkeen seuraavan kerran, eikä merkkijonon jälkeen merkkijonon jälkeen.
(?!pattern) Negatiivinen etukäteen tarkistus, joka vastaa missä tahansa merkkijonossa, joka ei vastaa mallia. Tämä on ei-käytettävä vastauksena, toisin sanoen vastaus ei tarvitse pitää julkaistavaksi tulevaa käyttöä varten. Esimerkiksi "“Windows(?!95|98|NT|2000)" voi vastata "Windows3.1" -sanan "Windows", mutta ei voi vastata "Windows2000" -sanan "Windows". Etukäteen tarkistus ei kuluta merkkejä, sillä se aloittaa seuraavana etsimisen merkkijonon tässä matchin jälkeen seuraavan kerran, eikä merkkijonon jälkeen merkkijonon jälkeen.
(?<=pattern) Negatiivinen etukäteen tarkistus, joka on samankaltainen positiiviselle etukäteen tarkistukselle, mutta suunta on päinvastainen. Esimerkiksi "“(?<=95|98|NT|2000)Windows" voi vastata "2000Windows" -sanan "Windows", mutta ei voi vastata "3.1Windows" -sanan "Windows".
(?<!pattern) Negatiivinen etukäteen tarkistus, joka on samankaltainen positiiviselle etukäteen tarkistukselle, mutta suunta on päinvastainen. Esimerkiksi "“(?<!95|98|NT|2000)Windows" voi vastata "3.1Windows" -sanan "Windows", mutta ei voi vastata "2000Windows" -sanan "Windows".
x|y Vastaavat x:ää tai y:tä. Esimerkiksi "“z|food" voi vastata "z" tai "food". "(z|f)ood" vastaa "zood" tai "food".
[xyz] Merkkijoukko. Vastaavat mitä tahansa kieppeä, joka on mainittuna. Esimerkiksi "“[abc]" voi vastata "plain" -sanan "a".
[^xyz] Paha merkki. Vastaavat mitä tahansa merkkejä, jota ei ole mainittu. Esimerkiksi "“[^abc]" voi vastata "plain" -sanan "p".
[a-z] Merkkijonon laajuus. Vastaavat mitä tahansa merkkejä tietyllä alueella. Esimerkiksi "“[a-z]" voi vastata "a"-to-"z" -laajuuden minkä tahansa pienen kirjaimen merkin.
[^a-z] Paha merkkialue. Vastaavat mitä tahansa merkkejä, jotka eivät ole tietyllä alueella. Esimerkiksi "“[^a-z]" voi vastata mitä tahansa merkkejä, jotka eivät sisälly "a"-to-"z" -laajuuteen.
\b Vastaavat sana-rajapintaa, mikä tarkoittaa kahden sanan ja tyhjien merkkien väliä. Esimerkiksi "“er\b" voi vastata "never" -sanan "er", mutta ei voi vastata "verb" -sanan "er".
\B Vastaavat ei-sana-rajapintaa. "“er\B" voi vastata "verb" -sanan "er", mutta ei voi vastata "never" -sanan "er".
\cx Vastaavat ohjausmerkkiä, jonka x määrittää. Esimerkiksi \cM vastaa Control-M:ää tai rivinvaihtomerkkiä. x:n arvon on oltava yksi A-Z tai a-z. Muuten c käsitetään alkuperäisen merkkinä "“c".
\d Vastaavat numeromerkkiä. Samoin kuin [0-9].
\D Vastaavat ei-numeromerkkiä. Samoin kuin [^0-9].
\f Vastaavat rivinvaihtomerkkiä. Samoin kuin \x0c ja \cL.
\n Vastaavat rivinvaihtomerkkiä. Samoin kuin \x0a ja \cJ.
\r Vastaavat return-merkkiä. Samoin kuin \x0d ja \cM.
\s Vastaavat mitä tahansa tyhjää merkkiä, mukaan lukien tyhjät, tabulaattori, rivinvaihto jne. Samoin kuin [ \f\n\r\t\v].
\S Vastaavat mitä tahansa ei-tyhjää merkkiä. Samoin kuin [^ \f\n\r\t\v].
\t Vastaavat välilehtiä. Samoin kuin \x09 ja \cI.
\v Vastaavat pystysuoria tabulaattoreita. Samoin kuin \x0b ja \cK.
\w Vastaavat mitä tahansa sanamerkkiä, mukaan lukien alaviiva. Samoin kuin "“[A-Za-z0-9_]".
\W Vastaavat mitä tahansa ei-sana-merkkiä. Samoin kuin "“[^A-Za-z0-9_]".
\xn Vastaavat n:ää, jossa n on kuusi heksadesimaalista numeroa. Heksadesimaalimuotoisten arvojen on oltava kaksi numeroa pituutta. Esimerkiksi "“\x41" vastaa "A". "\x041" on yhtä kuin "\x04&1". Säännöllisissä lausekkeissa voidaan käyttää ASCII-koodia.
\num Vastaavatnum:ää, jossa num on positiivinen kokonaisluku. Hae saatua vastausta. Esimerkiksi "“(.)\1" vastaa kahta peräkkäistä samaa merkkiä.
\n Merkitsee oktaalimuotoista arvoa tai taakse viittaavaa arvoa. Jos \n:n ennen on ainakin n saatu alilausetta, niin n on taakse viittaava. Muuten, jos n on oktaaliluku (0-7), niin n on oktaalimuotoa.
\nm Merkitsee oktaalimuotoista arvoa tai taakse viittaavaa arvoa. Jos \nm:n ennen on ainakin nm:n saatu alilausetta, niin nm on taakse viittaava. Jos \nm:n ennen on ainakin n saatu, niin n on taakse viittaava, jota seuraa kirjaimellinen m. Jos ei mikään yllä olevista ehdoista täytty, ja n ja m ovat molemmat oktaalilukuja (0-7), niin \nm vastaa oktaalimuotoista arvoa nm.
\nml Jos n on oktaaliluku (0-3), ja m ja l ovat molemmat oktaalilukuja (0-7), niin se vastaa oktaalimuotoista arvoa nml.
\un Vastaavat n:ää, jossa n on neljä heksadesimaalista numeroa kuvaava Unicode-merkki. Esimerkiksi, \u00A9 vastaa tekijänoikeusmerkkiä (©).
Yleisesti käytetyt säännölliset lausekkeet
Käyttäjätunnus /^[a-z0-9_-]{3,16}$/
Salasana /^[a-z0-9_-]{6,18}$/
Salasana 2 (?=^.{8,}$)(?=.*\d)(?=.*\W+)(?=.*[A-Z])(?=.*[a-z])(?!.*\n).*$ (sisältää numerot/isoja kirjaimia/pieniä kirjaimia/punktiomerkkejä, kaikki neljä on oltava, yli 8 merkkiä)
Heksadesimaalinen arvo /^#?([a-f0-9]{6}|[a-f0-9]{3})$/
Sähköposti /^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/
/^[a-z\d]+(\.[a-z\d]+)*@([\da-z](-[\da-z])?)+(\.{1,2}[a-z]+)+$/ tai \w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
URL /^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/ tai [a-zA-z]+://[^\s]*
IP-osoite /((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]?)$/ tai ((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)
HTML-tagit /^<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s+\/>)$/ tai <(.*)(.*)>.*<\/\1>|<(.*) \/>
Poista koodi\\kommentti (?<!http:|\S)//.*$
Vastaavat kaksisanat merkit (mukaan lukien kiinalaiset merkit) [^\x00-\xff]
Kiinalaised merkit (merkit) [\u4e00-\u9fa5]
Kiinalainen merkki Unicode-koodissa /^[\u2E80-\u9FFF]+$/
Kiinalaiset ja täyskanttikoodit (merkit) [\u3000-\u301e\ufe10-\ufe19\ufe30-\ufe44\ufe50-\ufe6b\uff01-\uffee]
Päivämäärä (vuosi-kuukausi-päivä) (\d{4}|\d{2})-((0?([1-9]))|(1[1|2]))-((0?[1-9])|([12]([1-9]))|(3[0|1]))
Päivämäärä (kuukausi/päivä/vuosi) ((0?[1-9]{1})|(1[1|2]))/(0?[1-9]|([12][1-9])|(3[0|1]))/(\d{4}|\d{2})
Aika (tunti: minuutti, 24 tuntia) ((1|0?)[0-9]|2[0-3]):([0-5][0-9])
Kiinalaisen maan kiinteä puhelinnumero (\d{4}-|\d{3}-)?(\d{8}|\d{7})
Kiinalaisen maan matkapuhelinnumero 1\d{10}
Kiinalaisen maan postinumero [1-9]\d{5}
Kiinalaisen maan henkilökorttinumero (15 tai 18 numeroa) \d{15}(\d\d[0-9xX])?
Ei-negatiivinen kokonaisluku (positiivinen luku tai nolla) \d+
Positiivinen kokonaisluku [0-9]*[1-9][0-9]*
Negatiivinen kokonaisluku -[0-9]*[1-9][0-9]*
Kokonaisluku -?\d+
Desimaaliluku (-?\d+)(\.\d+)?
Tyhjät rivit \n\s*\r tai \n\n(editplus) tai ^[\s\S ]*\n
QQ-numero [1-9]\d{4,}
Sanat, jotka eivät sisällä abc:tä \b((?!abc)\w)+\b
Vastaavat alku- ja loppumerkit ^\s*|\s*$
Muokkaa yleisiä
Seuraavassa on erityisten kiinalaisten merkkien korjauksia (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>

Regex-syntaksin nopea tarkistus - Yleisiä regex-tekniikoita ja syntaksia

Säännölliset lausekkeet ovat tehokas tekstikäsittelytyökalu. Tämä sivu tarjoaa sinulle yleisen Regex-syntaksin nopean tarkistuksen, joka auttaa sinua ymmärtämään nopeasti säännöllisten lausekkeiden perus syntaksia, muokkaimia, alilausetta, ahneita ja ei-ahneita malleja jne.

Regex-perustosyntaksi

Säännölliset lausekkeet kuvaavat merkkijonon mallia, tyypillisiä perus syntakseja ovat:

Yleisesti käytetyt Regex-muokkaimet

Regex-muokkaimet muuttavat säännöllisten lausekkeiden vastaamissääntöjä. Yleisiä muokkaimia ovat:

Ahnas ja ei-ahnaat mallit

Säännöllisissä lausekkeissa määrä on oletusarvoisesti ahnas, joka yrittää vastata mahdollisimman monelle merkille. Ei-ahneat mallit määritellään lisäämällä ? määrän jälkeen, kuten esimerkeissä:

Alilausetta ja ryhmät

Regex-alilausetta määritetään sulkujen ( ( ) ) avulla, mikä helpottaa vastausten erottelua. Ryhmiä käytetään “|” merkillä. Esimerkiksi:

Regex-nopea tarkistus

Tässä on yleisesti käytettyjen säännöllisten lausekkeiden nopea tarkistus:

Toiminto Säännöllinen lauseke
Vastaavat numeeriset merkit \d
Vastaavat ei-numeeriset merkit \D
Vastaavat kirjaimia [a-zA-Z]
Vastaavat mitä tahansa merkkiä .
Vastaavat tyhjää merkkiä \s

Regex-sovellusalueet

Säännöllisiä lausekkeita käytetään laajasti seuraavilla alueilla:

Vinkkejä säännöllisten lausekkeiden oppimiseen

Käytä välittömästi Regex-syntaksin nopeaa tarkistusta, mikä tekee sinusta tehokkaampia kirjoittaessasi säännöllisiä lausekkeita ja parantaa tekstinkäsittelytaitojasi!

Teidän jäljet:
Valitse kieli