Mindig szerette volna megtanulni a reguláris kifejezéseket, de rettentette őket összetettségétől? Ebben a cikkben öt könnyen megtanulható RegEx-trükköt mutatok be, amelyeket azonnal elkezdhet használni a kedvenc szövegszerkesztőben.
Szövegszerkesztő beállítása
Míg szinte minden szövegszerkesztő támogatja a Regular Expressions kifejezést, a Visual Studio Code-t fogom használni ehhez az oktatóanyaghoz, de tetszőleges szerkesztőt használhat. Vegye figyelembe azt is, hogy a RegEx-et általában valahol a keresési bemenet közelében kell bekapcsolnia. A VS-kódban ezt megteheti:

1) .
- illeszkedjen bármilyen karakterhez
Kezdjük egyszerűen. A pont szimbólum .
bármely karakterrel megegyezik:
b.t

A RegEx fölött található egyezések "bot”
, "bat”
és bármely más három karakterből álló szó, amely kezdődik b
és végződik t
. De ha meg akarja keresni a pont szimbólumot, akkor el kell menekülnie vele \
, így ez a RegEx csak a pontos szövegnek felel meg "b.t"
:
b\.t

2). * - Bármihez illeszkedjen
Itt .
olyan „bármilyen karakter” és *
eszközök „valamit, mielőtt ez a szimbólum ismételt tetszőleges számú alkalommal.” Ezek együttesen ( .*
) bármilyen szimbólumot jelentenek, akárhányszor. Használhatja például valamilyen szöveggel kezdődő vagy azzal végződő találatok keresésére. Tegyük fel, hogy van egy javascript metódusunk a következő aláírással:
loadScript(scriptName: string, pathToFile: string)
És meg akarjuk találni a módszer összes hívását, ahol pathToFile
a mappában található bármely fájlra mutat “lua”
. Ehhez a következő reguláris kifejezést használhatja:
loadScript.*lua
Ami azt jelenti, „felel meg az összes szöveget kezdve “loadScript”
követte, ami akár az utolsó előfordulása “lua”
„

3)? - Nem kapzsi mérkőzés
A ?
szimbólum után .*
és néhány más RegEx szekvencia azt jelenti, hogy „a lehető legkevesebbet illeszkedjen”. Ha megnézi az előző képet, látni fogja, hogy a szöveg “lua”
minden mérkőzésen kétszer látható, és a másodikig minden “lua”
egyezik. Ha mindent az első előfordulásig "lua"
szeretne összehangolni, akkor a következő RegEx-et használja:
loadScript.*?lua
Ami azt jelenti, hogy „illeszkedjen mindenhez, kezdve a "loadScript"
következővel bármivel, az első előfordulásig "lua"
”

4) () $ - Csoportok és háttérreferenciák rögzítése
Oké, most illeszthetünk néhány szöveget. De mi van, ha meg akarjuk változtatni a megtalált szöveg egyes részeit? Ehhez gyakran be kell használnunk elfogási csoportokat.
Tegyük fel, hogy megváltoztattuk a loadScript
módszerünket, és most hirtelen egy újabb argumentumra van szükség a két argumentuma közé. Nézzük neve az új érv id
, hogy az új funkció aláírás kell kinéznie: loadScript(scriptName, id, pathToFile)
. Itt nem használhatjuk a szövegszerkesztőnk normál csere funkcióját, de a Regular Expresszre pontosan szükségünk van.

Fent látható a következő reguláris kifejezés futtatásának eredménye:
loadScript\(.*?,.*?\)
Ami azt jelenti: „minden mérkőzést össze kell kezdeni, "loadScript("
utána következik bármi az elsőig ,
, majd bármi az elsőig )
”
Az egyetlen dolog, ami furcsának tűnhet itt számodra, a \
szimbólumok. A zárójelek elől menekülni szoktak.
Meg kell kerülnünk a szimbólumokat, (
és )
mivel azok speciális karakterek, amelyeket a RegEx használ az egyező szöveg egyes részeinek rögzítésére. De illesztenünk kell a tényleges zárójeles karaktereket.
Az előző RegEx-ben metódushívásunk két argumentumát definiáltuk a .*?
szimbólumokkal. Tegyük mindegyik érvünket külön elfogási csoportba azáltal, hogy hozzáadunk (
és )
szimbólumokat helyezünk el körülöttük:
loadScript\((.*?),(.*?)\)
Ha futtatja ezt a RegEx-et, látni fogja, hogy semmi sem változott. Ennek oka, hogy egyezik ugyanazzal a szöveggel. De most hivatkozhatunk az első érvre $1
és a második érvre mint $2
. Ezt visszahívásnak hívják, és segít abban, hogy azt tegyük, amit akarunk: adjunk hozzá egy másik argumentumot a hívás közepére:
Keresési bemenet:
loadScript\((.*?),(.*?)\)
Ami ugyanazt jelenti, mint az előző RegEx, de argumentumokat térképez le az 1., illetve a 2. csoport rögzítésére.
Bevitel cseréje:
loadScript($1,id,$2)
Ami azt jelenti, hogy „cseréljen minden egyeztetett szöveget szövegrészre, “loadScript(“
majd az 1. “id”
rögzítési csoportot, a 2. rögzítési csoportot és )
”. Ne feledje, hogy nem kell kikerülnie a zárójelek közül a csere bemenetben.

5) [] - Karakterosztályok
Azok a karakterek, amelyeket egyeztetni szeretne egy adott pozícióban, felsorolhatja azokat a szimbólumok köré helyezésével [
és ]
szimbólumokkal. Például az osztály [0-9]
minden számjegyet egyezik 0-tól 9-ig. Az összes számjegyet kifejezetten felsorolhatja: [0123456789]
- a jelentés megegyezik. Használhatja a kötőjelet betűkkel is, [a-z]
minden kisbetűs latin karakterhez, [A-Z]
bármely nagybetűs latin karakterhez és [a-zA-Z]
mindkettőhöz illeszkedik.
*
Karakterosztály után is használhat, csakúgy, mint utána .
, ami ebben az esetben azt jelenti: „illeszkedjen az osztályban szereplő karakterek tetszőleges számú előfordulásához”

Utolsó szó
Tudnia kell, hogy több RegEx íz létezik. Amiről itt beszéltem, az a javascript RegEx motor. A legtöbb modern motor hasonló, de lehetnek bizonyos különbségek. Ezek a különbségek általában tartalmazzák a menekülési karaktereket és a háttérreferenciákat.
Arra kérem, nyissa meg a szövegszerkesztőt, és most kezdje el használni néhány ilyen trükköt. Látni fogja, hogy most már sok korszerűsítési feladatot sokkal gyorsabban elvégezhet, mint korábban. Ha jól érzed magad ezeket a trükköket, elkezdhetsz többet kutatni a reguláris kifejezésekről.
Köszönöm, hogy elolvasta a cikkemet a végéig. Vegyen fel tapsokat, ha hasznosnak találta, és iratkozzon fel további frissítésekre. További cikkeket fogok közzétenni a reguláris kifejezésekről, a javascriptről és általában a programozásról.