Ați dorit întotdeauna să învățați expresii regulate, dar ați fost lăsați de complexitatea lor? În acest articol, vă voi arăta cinci trucuri RegEx ușor de învățat pe care le puteți începe să utilizați imediat în editorul dvs. de text preferat.

Configurare editor text

În timp ce aproape orice editor de text acceptă expresii regulate acum, voi folosi Visual Studio Code pentru acest tutorial, dar puteți utiliza orice editor doriți. De asemenea, rețineți că, de obicei, trebuie să activați RegEx undeva lângă intrarea de căutare. Iată cum faceți acest lucru în VS Code:

Trucuri RegEx simple pentru incepatori
Trebuie să activați RegEx bifând această opțiune

1) . – Potrivește orice personaj

Să începem simplu. Simbolul punct . se potrivește cu orice personaj:

b.t
1611576428 618 Trucuri RegEx simple pentru incepatori

Deasupra meciurilor RegEx "bot”, "bat” și orice alt cuvânt de trei caractere care începe cu b și se termină în t. Dar dacă doriți să căutați simbolul punct, trebuie să îl scăpați cu , deci acest RegEx se va potrivi doar cu textul exact "b.t":

b.t
1611576428 800 Trucuri RegEx simple pentru incepatori

2). * – Potriviți orice

Aici . mijloace „Orice personaj” și * mijloace „Orice înainte de acest simbol s-a repetat de nenumărate ori”. Împreună (.*) înseamnă „Orice simbol de câte ori”. Îl puteți folosi, de exemplu, pentru a găsi potriviri care încep sau se termină cu un text. Să presupunem că avem o metodă javascript cu următoarea semnătură:

ad-banner
loadScript(scriptName: string, pathToFile: string)

Și vrem să găsim toate apelurile acestei metode undepathToFile indică orice fișier din dosar “lua” . Puteți utiliza următoarea expresie regulată pentru aceasta:

loadScript.*lua

Care înseamnă, „Potriviți tot textul începând cu“loadScript” urmat de orice până la ultima apariție a “lua”

1611576428 400 Trucuri RegEx simple pentru incepatori
loadScript.*lua: matches everything starting with "loadScript" and ending in "lua"

3)? – Meci non-lacom

? simbol după .* și alte secvențe RegEx înseamnă „potriviți cât mai puțin posibil”. Dacă vă uitați la imaginea anterioară, veți vedea textul respectiv “lua” este văzut de două ori în fiecare meci și totul până la al doilea “lua” a fost asortat. Dacă ai vrut să asortezi totul până la prima apariție a "lua" în schimb, ați folosi următorul RegEx:

loadScript.*?lua

Care înseamnă, „Potrivește totul începând cu"loadScript" urmat de orice până la prima apariție a "lua"

1611576429 553 Trucuri RegEx simple pentru incepatori
loadScript.*?lua: matches totul începând cu loadScript și până la prima apariție a „lua”

4) () $ – Capturați grupuri și referințe înapoi

Bine, acum putem asorta un text. Dar dacă vrem să schimbăm părți ale textului pe care le-am găsit? Pentru asta trebuie să folosim adesea grupuri de captură.

Să presupunem că ne-am schimbat loadScript metoda și acum are nevoie brusc de un alt argument inserat între cele două argumente. Să numim acest nou argument id, astfel încât noua semnătură a funcției ar trebui să arate astfel: loadScript(scriptName, id, pathToFile). Nu putem folosi caracteristica normală de înlocuire a editorului de text aici, dar o expresie regulată este exact ceea ce avem nevoie.

1611576429 217 Trucuri RegEx simple pentru incepatori
loadScript (. *?,. *? )

Mai sus puteți vedea rezultatul executării următoarei expresii regulate:

loadScript(.*?,.*?)

Care înseamnă: „Potrivește totul începând cu "loadScript(" urmat de orice până la primul ,, apoi urmat de orice până la primul )

Singurele lucruri care ar putea părea ciudate aici pentru dvs. sunt simboluri. Sunt folosite pentru a scăpa de paranteze.

Trebuie să scăpăm de simboluri ( și ) deoarece sunt caractere speciale folosite de RegEx pentru a captura părți din textul potrivit. Dar trebuie să potrivim caracterele reale din paranteză.

În RegEx anterior, am definit două argumente ale apelului metodei noastre cu .*? simboluri. Să facem fiecare dintre argumentele noastre separate grup de captură prin adăugarea ( și ) simboluri din jurul lor:

loadScript((.*?),(.*?))

Dacă rulați acest RegEx, veți vedea că nimic nu s-a schimbat. Acest lucru se datorează faptului că se potrivește cu același text. Dar acum ne putem referi la primul argument ca $1 iar la al doilea argument ca $2. Aceasta se numește backreference și ne va ajuta să facem ceea ce dorim: adăugați un alt argument în mijlocul apelului:

Intrare căutare:

loadScript((.*?),(.*?))

Ceea ce înseamnă același lucru ca RegEx anterior, dar mapează argumente pentru a captura grupurile 1 și respectiv 2.

Înlocuiți intrarea:

loadScript($1,id,$2)

Care înseamnă „Înlocuiți fiecare text asociat cu text “loadScript(“ urmat de grupul de captură 1, “id”, capturați grupul 2 și )”. Rețineți că nu este nevoie să scăpați de paranteze în intrarea de înlocuire.

1611576429 741 Trucuri RegEx simple pentru incepatori
Rezultatul înlocuirii

5) [ ] – Clasele de personaje

Puteți afișa caracterele pe care doriți să le potriviți într-o anumită poziție plasând [ and ] simboluri în jurul acestor personaje. De exemplu, clasa [0-9] se potrivește cu toate cifrele de la 0 la 9. De asemenea, puteți lista explicit toate cifrele: [0123456789] – sensul este același. Puteți utiliza și liniuță cu litere, [a-z] se va potrivi cu orice caracter latin cu litere mici,[A-Z] se va potrivi cu orice caracter latin cu majuscule și [a-zA-Z] se va potrivi cu ambele.

Puteți utiliza, de asemenea * după o clasă de personaje la fel ca după ., ceea ce înseamnă în acest caz: „Potriviți orice număr de apariții ale personajelor din această clasă”

1611576429 880 Trucuri RegEx simple pentru incepatori
așteptați. * la.egal ([0–9]* ): Potriviți numai acele linii în care ne așteptăm ca variabila testată să fie egală cu un număr

Ultimul cuvant

Trebuie să știți că există mai multe arome RegEx. Cel pe care l-am discutat aici este motorul javascript RegEx. Majoritatea motoarelor moderne sunt similare, dar pot exista unele diferențe. De obicei, aceste diferențe includ caractere de evadare și semne de referință inversă.

Vă îndemn să vă deschideți editorul de text și să începeți să folosiți câteva dintre aceste trucuri chiar acum. Veți vedea că acum puteți finaliza multe sarcini de refactorizare mult mai repede decât înainte. Odată ce vă simțiți confortabil cu aceste trucuri, puteți începe să căutați mai multe expresii regulate.

Vă mulțumesc că ați citit articolul meu până la capăt. Adăugați clape dacă vi s-a părut util și abonați-vă pentru mai multe actualizări. Voi publica mai multe articole despre expresii regulate, javascript și programare în general.