Egyszerű RegEx trükkök kezdőknek

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 pathToFilea 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 loadScriptmó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.