2.1 Pont
A pont . a legegyszerűbb példa a metakarakterekre. A metakarakter . minden egyes karakterrel megegyezik. Nem illeszkedik a visszatérő vagy az újsor karakterekhez. A .ar
szabályos kifejezés például a következőt jelenti: bármely karakter, amelyet a a
betű követ, majd a r
betű.
.ar => The car parked in the garage.
Tesztelje a szabályos kifejezést
2.2 Karakterkészlet
A karakterkészleteket karakterosztályoknak is nevezik. A karakterkészletek specifikálására szögletes zárójeleket használunk. A karakterkészleten belül kötőjelet használunk a karakterek tartományának megadására. A karaktertartomány sorrendje a szögletes zárójeleken belül nem számít. Például a he
szabályos kifejezés a következőket jelenti: nagybetűs T
vagy kisbetűs t
, majd h
betű, majd e
betű.
he => The car parked in the garage.
Tesztelje a szabályos kifejezést
Egy karakterkészleten belüli pont azonban szó szerinti pontot jelent. A szabályos kifejezés ar
azt jelenti: egy kisbetűs karakter a
, amelyet egy r
betű követ, és egy .
pont karakter követ.
ar => A garage is a good place to park a car.
Teszteljük a szabályos kifejezést
2.2.1 Negált karakterkészlet
A caret szimbólum általában a karakterlánc kezdetét jelöli, de ha a nyitó szögletes zárójel után írjuk be, akkor negálja a karakterkészletet. A példa esetében a ar
szabályos kifejezés azt jelenti: bármely karakter, kivéve c
, a a
karaktert követi, amelyet a r
betű követ.
ar => The car parked in the garage.
Teszteljük a szabályos kifejezést
2.3 Ismétlések
A +
, *
vagy ?
metakaraktereket követően megadható, hogy egy alminta hányszor fordulhat elő. Ezek a meta karakterek különböző helyzetekben eltérően hatnak.
2.3.1 A csillag
A *
szimbólum az előző megfeleltető nulla vagy több ismétlődésével egyezik meg. A a*
szabályos kifejezés jelentése: az előző a
kisbetűs karakter nulla vagy több ismétlődése. Ha azonban egy karakterkészlet vagy osztály után jelenik meg, akkor a teljes karakterkészlet ismétlődéseit találja meg. Például a *
szabályos kifejezés azt jelenti: tetszőleges számú kisbetű egy sorban.
* => The car parked in the garage #21.
Teszteljük a szabályos kifejezést
A *
szimbólum a . metakarakterrel együtt használható a karakterek .*
bármely karakterláncának megfeleltetésére. A *
szimbólum a \s
szóköz karakterrel együtt használható a szóköz karakterekből álló karakterlánc illesztésére. Például a\s*cat\s*
kifejezés azt jelenti: nulla vagy több szóköz, majd c
kisbetűs karakter, után a
kisbetűs karakter, majd t
kisbetűs karakter, majd nulla vagy több szóköz.
\s*cat\s* => The fat cat sat on the concatenation.
A szabályos kifejezés tesztelése
2.3.2 A Plusz
A +
szimbólum az előző karakter egy vagy több ismétlésére illeszkedik. Például a c.+t
szabályos kifejezés a következőt jelenti: c
kisbetű, amelyet legalább egy karakter követ, majd a t
kisbetűs karakter. Tisztázni kell, hogy a t
az utolsó t
a mondatban.
c.+t => The fat cat sat on the mat.
Teszteljük a szabályos kifejezést
2.3.3 A kérdőjel
A szabályos kifejezésben a meta karakter ?
az előző karaktert választhatóvá teszi. Ez a szimbólum az előző karakter nulla vagy egy példányával egyezik meg. Például a ?he
szabályos kifejezés azt jelenti, hogy: Választható a T
nagybetű, majd a h
kisbetű, majd a e
kisbetű.
he => The car is parked in the garage.
Tesztelje a szabályos kifejezést
?he => The car is parked in the garage.
Tesztelje a szabályos kifejezést
2.4 Zárójelek
A szabályos kifejezésekben a zárójelek, amelyeket kvantoroknak is neveznek, arra szolgálnak, hogy meghatározzák, hogy egy karakter vagy karaktercsoport hányszor ismétlődhet. Például a {2,3}
szabályos kifejezés azt jelenti: {2,3}
: Legalább 2 számjegyet, de legfeljebb 3-at ( 0 és 9 közötti karaktereket) egyezzen meg.
{2,3} => The number was 9.9997 but we rounded it off to 10.0.
Teszteljük a szabályos kifejezést
A második számot elhagyhatjuk. Például a{2,}
szabályos kifejezés azt jelenti, hogy: 2 vagy több számjegyre illeszkedik. Ha a vesszőt is eltávolítjuk, a szabályos kifejezés {3}
azt jelenti:: Pontosan 3 számjegyre illeszkedik.
{2,} => The number was 9.9997 but we rounded it off to 10.0.
Tesztelje a szabályos kifejezést
{3} => The number was 9.9997 but we rounded it off to 10.0.
Tesztelje a szabályos kifejezést
2.5 Karaktercsoport
A karaktercsoport egy almintákból álló csoport, amelyet zárójelben (…)
írunk. Mint már korábban tárgyaltuk, hogy a reguláris kifejezésben, ha egy karakter után kvantifikátort teszünk, akkor az megismétli az előző karaktert. De ha egy karaktercsoport után kvantort teszünk, akkor az egész karaktercsoportot megismétli. Például a (ab)*
szabályos kifejezés a ab
karakter nulla vagy több ismétlődésére illik. Használhatjuk a |
metakarakter váltakozást is karaktercsoporton belül. Például a (c|g|p)ar
szabályos kifejezés azt jelenti: c
, g
vagy p
kisbetűs karakter, majd a
karakter, majd r
karakter.
(c|g|p)ar => The car is parked in the garage.
Teszteljük a szabályos kifejezést
2.6 Alternáció
A szabályos kifejezésben a függőleges sáv |
a váltakozás meghatározására szolgál. A váltakozás olyan, mint egy feltétel több kifejezés között. Most talán azt gondolja, hogy a karakterkészlet és a váltakozás ugyanúgy működik. De a nagy különbség a karakterkészlet és az alternáció között az, hogy a karakterkészlet a karakterek szintjén működik, az alternáció viszont a kifejezések szintjén. Például a (T|t)he|car
szabályos kifejezés azt jelenti: T
nagybetűs karakter vagy t
kisbetűs karakter, majd h
kisbetűs karakter, majd e
kisbetűs karakter vagy c
kisbetűs karakter, majd a
kisbetűs karakter, majd r
kisbetűs karakter.
(T|t)he|car => The car is parked in the garage.
Tesztelje a szabályos kifejezést
2.7 Speciális karakter elkerülés
A \
backslash \
a szabályos kifejezésben a következő karakter elkerüléséhez használatos. Ez megengedi, hogy szimbólumot adjunk meg illeszkedő karakterként, beleértve a fenntartott karaktereket { } / \ + * . $ ^ | ?
is. Ha egy speciális karaktert szeretne illeszkedő karakterként használni, akkor írja elé a \-t.
A . szabályos kifejezés például minden karakterrel illeszkedik, kivéve az Újsor kivételével. Most a . egy bemeneti karakterláncban a (f|c|m)at\.?
szabályos kifejezés a következőt jelenti: f
, c
vagy m
kisbetű, majd a
kisbetűs karakter, majd t
kisbetű, majd opcionális .
karakter.
(f|c|m)at\.? => The fat cat sat on the mat.
Teszteljük a reguláris kifejezést
2.8 Horgonyok
A reguláris kifejezésekben a horgonyok segítségével ellenőrizzük, hogy az illeszkedő szimbólum a bemeneti karakterlánc kezdő vagy befejező szimbóluma. A horgonyoknak két típusa van: Az első típus a Caret ^
, amely azt ellenőrzi, hogy a megfelelő karakter a bemeneti karakterlánc kezdő karaktere-e, a második típus pedig a Dollar $
, amely azt ellenőrzi, hogy a megfelelő karakter a bemeneti karakterlánc utolsó karaktere-e.
2.8.1 Caret
A Caret ^
szimbólumot annak ellenőrzésére használjuk, hogy a megfelelő karakter az első karakter a bemeneti karakterláncban. Ha a következő ^a
szabályos kifejezést (ha a a kezdő szimbólum) alkalmazzuk a abc
bemeneti karakterláncra, akkor az a
-nek felel meg. De ha a fenti bemeneti karakterláncra a ^b
szabályos kifejezést alkalmazzuk, akkor nem talál semmit. Mert a abc
bemeneti karakterláncban b
nem a kezdő szimbólum. Nézzünk meg egy másik ^(T|t)he
szabályos kifejezést, amely azt jelenti: T
nagybetűs karakter vagy t
kisbetűs karakter a bemeneti karakterlánc kezdőszimbóluma, ezt követi kisbetűs karakter h
, majd e
kisbetűs karakter.
(T|t)he => The car is parked in the garage.
A szabályos kifejezés tesztelése
^(T|t)he => The car is parked in the garage.
A szabályos kifejezés tesztelése
2.8.2 Dollár
Dollár $
szimbólummal ellenőrzi, hogy a megfelelő karakter az utolsó karakter a bemeneti karakterláncban. Például a (at\.)$
szabályos kifejezés azt jelenti: a
kisbetűs karakter, majd t
kisbetűs karakter, majd .
karakter, és az illesztőnek a karakterlánc végén kell lennie.
(at\.) => The fat cat. sat. on the mat.
Tesztelje a reguláris kifejezést
(at\.)$ => The fat cat. sat. on the mat.
Tesztelje a reguláris kifejezést
Szöveges karakterkészletek
A reguláris kifejezés rövidítéseket biztosít a gyakran használt karakterkészletekhez, amelyek kényelmes rövidítéseket kínálnak a gyakran használt reguláris kifejezésekhez. A gyorsírási karakterkészletek a következők:
Lookaround
A lookbehind és lookahead (más néven lookaround) a nemmegragadó csoportok speciális típusai (A minta megfeleltetésére szolgálnak, de nem szerepelnek a megfelelő listában). A lookaheads-et akkor használjuk, ha az a feltételünk, hogy ezt a mintát megelőzi vagy követi egy másik bizonyos minta. Például a következő .44 and .88
bemeneti karakterláncból az összes olyan számot szeretnénk megszerezni, amelyet $
karakter előz meg. A következő (?<=$)*
szabályos kifejezést fogjuk használni, ami azt jelenti: megkapjuk az összes olyan számot, amely tartalmazza a . karaktert, és amelyet a $
karakter előz meg. Az alábbiakban a reguláris kifejezésekben használt keresőkifejezések következnek:
4.1 Pozitív kereső
A pozitív kereső azt állítja, hogy a kifejezés első része után a kereső kifejezésnek kell következnie. A visszaadott találat csak azt a szöveget tartalmazza, amelyre a kifejezés első része illik. A pozitív lookahead meghatározásához zárójeleket használunk. A zárójeleken belül egy kérdőjelet használunk egyenlőségjellel, így: (?=…)
. A Lookahead kifejezést az egyenlőségjel után, a zárójelek között kell leírni. Például a (T|t)he(?=\sfat)
szabályos kifejezés azt jelenti: opcionálisan illeszkedik a t
kisbetűs vagy T
nagybetűs betűhöz, amelyet h
betű, majd e
betű követ. A zárójelben pozitív lookaheadet definiálunk, amely azt mondja a reguláris kifejezés motorjának, hogy illessze a The
vagy the
betűket, amelyeket a fat
szó követ.
(T|t)he(?=\sfat) => The fat cat sat on the mat.
Teszteljük a reguláris kifejezést
4.2 Negatív lookahead
A negatív lookaheadet akkor használjuk, ha a bemeneti karakterláncból az összes olyan találatot szeretnénk megkapni, amelyet nem követ egy minta. A negatív lookahead ugyanúgy van definiálva, mint a pozitív lookahead, de az egyetlen különbség az, hogy az egyenlő =
karakter helyett !
negációs karaktert használunk, azaz (?!…)
. Nézzük meg a következő (T|t)he(?!\sfat)
szabályos kifejezést, amely azt jelenti: az összes The
vagy the
szó kinyerése a bemeneti karakterláncból, amelyet nem követ a fat
szó, amelyet egy szóköz karakter előz meg.
(T|t)he(?!\sfat) => The fat cat sat on the mat.
Teszteljük a szabályos kifejezést
4.3 Pozitív lookbehind
Pozitív lookbehind arra szolgál, hogy minden olyan találatot kinyerjünk, amelyet egy specifikus minta előz meg. A pozitív lookbehind-et (?<=…)
jelöli. Például a (?<=(T|t)he\s)(fat|mat)
szabályos kifejezés azt jelenti: a bemeneti karakterláncból az összes fat
vagy mat
szó kinyerése, amely a The
vagy the
szó után van.
(?<=(T|t)he\s)(fat|mat) => The fat cat sat on the mat.
Tesztelje a szabályos kifejezést
4.4 Negatív lookbehind
Negatív lookbehind az összes olyan találat kinyerésére szolgál, amelyet nem előz meg egy specifikus minta. A negatív lookbehind-et (?<!…)
jelöli. Például a (?<!(T|t)he\s)(cat)
reguláris kifejezés a következőt jelenti: az összes cat
szó kinyerése a bemeneti karakterláncból, amely nem a The
vagy the
szó után van.
(?<!(T|t)he\s)(cat) => The cat sat on cat.
Teszteli a reguláris kifejezést
Flags
A flageket módosítóknak is nevezik, mert módosítják a reguláris kifejezés kimenetét. Ezek a flag-ek tetszőleges sorrendben és kombinációban használhatók, és a RegExp szerves részét képezik.
5.1 Case Insensitive
A i
módosító a case-insensitive illesztés végrehajtására szolgál. Például a /The/gi
szabályos kifejezés a következőt jelenti: T
nagybetű, majd h
kisbetű, majd e
karakter. A reguláris kifejezés végén pedig a i
jelző azt mondja a reguláris kifejezésmotornak, hogy hagyja figyelmen kívül a nagy- és kisbetűket. Mint látható, a g
jelzőt is megadtuk, mert a mintát a teljes bemeneti karakterláncban szeretnénk keresni.
The => The fat cat sat on the mat.
Teszteljük a reguláris kifejezést
/The/gi => The fat cat sat on the mat.
Teszteljük a reguláris kifejezést
5.2 Globális keresés
A g
módosítót globális egyezés végrehajtásához használjuk (az összes találatot keresi, és nem áll meg az első találat után). Például a /.(at)/g
szabályos kifejezés a következőt jelenti: bármely karakter, kivéve új sor, utána kisbetűs karakter a
, utána kisbetűs karakter t
. Mivel a g
jelzőt adtuk meg a reguláris kifejezés végén, most már az összes találatot megtalálja a bemeneti karakterláncban, nem csak az elsőt (ami az alapértelmezett viselkedés).
/.(at)/ => The fat cat sat on the mat.
Tesztelje a reguláris kifejezést
/.(at)/g => The fat cat sat on the mat.
Tesztelje a reguláris kifejezést
5.3 Többsoros
A m
módosító a többsoros egyezés végrehajtásához használható. Amint azt korábban már tárgyaltuk a (^, $)
horgonyokat arra használjuk, hogy ellenőrizzük, hogy a minta a bemeneti karakterlánc eleje vagy vége. De ha azt akarjuk, hogy a horgonyok minden egyes sorban működjenek, akkor használjuk am
jelzőt. Például a /at(.)?$/gm
szabályos kifejezés azt jelenti: kisbetűs karakter a
, utána kisbetűs t karakter, opcionálisan bármi, kivéve új sor. És a m
flag miatt most a reguláris kifejezések motorja a karakterlánc minden sorának végén illeszti a mintát.
/.at(.)?$/ => The fat cat sat on the mat.
Tesztelje a reguláris kifejezést
"/.at(.)?$/gm" => The fat cat sat on the mat.
Tesztelje a reguláris kifejezést
Mohó vs. lusta illesztés
A regex alapértelmezés szerint mohó illesztést végez, ami azt jelenti, hogy addig illeszt, ameddig lehet. Használhatjuk a ?
lusta módon való megfeleltetést, ami azt jelenti, hogy olyan rövid, amennyire csak lehetséges
/(.*at)/ => The fat cat sat on the mat.
Teszteljük a reguláris kifejezést
/(.*?at)/ => The fat cat sat on the mat.
Teszteljük a reguláris kifejezést
És ezzel véget is ér ez a bejegyzés. Remélem, hogy ez a bejegyzés hasznos volt. Győződjön meg róla, hogy gyakorolja a tanultakat az olyan szolgáltatások segítségével, mint a regexr.com vagy a regex101.com.