MySQL Java JavaScript PHP Python HTML-CSS C-sharp

Expresiile regulate în metodele String

Мetoda match

Pentru a căuta toate potrivirile într-un șir, se utilizează metoda match():

const initialText = "Am băut o băutura carbogazoasă";
const exp = /băut[a-z]*/gi;
const result = initialText.match(exp);
result.forEach(value => console.log(value));
// sau așa
// console.log(result[0]);
// console.log(result[1]);

Simbolul asterisk (*) indică posibilitatea existenței unui număr nedeterminat de caractere de la a la z după șirul "băut". În final, în array-ul rezultat vor fi următoarele cuvinte:

băut
băutura

Pe de o parte, această metodă seamănă cu metoda exec() a obiectului RegExp, cu excepția faptului că exec() returnează doar prima potrivire:

const initialText = "Am băut o băutura carbogazoasă";
const exp = /băut[a-z]*/gi;
const result2 = exp.exec(initialText);
result2.forEach(value => console.log(value));

Afișarea consolei în browser:

băut

Divizarea șirului - Metoda split

Metoda split poate utiliza expresii regulate pentru a separa șirurile. De exemplu, să despărțim textul în cuvinte (mai exact, după spații) folosind metacaracterul "\s":

const initialText = "Astăzi a fost o vreme frumoasă";
const exp = /\s/;
const result = initialText.split(exp);
result.forEach(value => console.log(value));

Afișajul consolei în browser:

Astăzi a fost o vreme frumoasă

Căutare în șir - Metoda search

Metoda search găsește indexul primei potriviri în șir:

const initialText = "hello world";
const exp = /wor/;
const result = initialText.search(exp);
console.log(result); // 6

Înlocuire - Metodele replace

Metoda replace permite înlocuirea tuturor potrivirilor unei expresii regulate cu un șir specific. Primul parametru al metodei este expresia regulată, iar al doilea este cu ce să înlocuim potrivirile. Exemplu de înlocuire:

let meniu = "Mic dejun: terci, ceai. Prânz: supă, ceai. Cină: salată, ceai.";
const exp = /ceai/gi;
meniu = meniu.replace(exp, "cafea");
console.log(meniu);

Afișajul în consolă:

Mic dejun: terci, cafea. Prânz: supă, cafea. Cină: salată, cafea.

O altă formă a metodei acceptă o funcție de înlocuire ca al doilea parametru. Această funcție primește potrivirea expresiei regulate și returnează șirul cu care se înlocuiește potrivirea. De exemplu, să înlocuim "ceai" cu "cafea" doar pentru micul dejun:

let meniu = "Mic dejun: terci, ceai. Prânz: supă, ceai. Cină: salată, ceai.";
const exp = /ceai/gi;
let i = 0;
meniu = meniu.replace(exp, function(ceai){
   if(i++ == 0) return "cafea";
   else return ceai;
});
console.log(meniu);  // Mic dejun: terci, cafea. Prânz: supă, ceai. Cină: salată, ceai.

Pentru indicatorul de înlocuire, folosim un contor - variabila i. Dacă aceasta este egală cu 0, facem înlocuirea. În celelalte cazuri, returnăm potrivirea - șirul "ceai".

Un caz mai complex. Să presupunem că avem următorul text:

Data publicării: 2021-09-06
Actualizat la: 2021-09-14

Aici se utilizează datele în formatul yyyy-MM-dd. Să presupunem că trebuie să schimbăm formatul datelor la "dd.MM.yyyy". Pentru aceasta, vom defini următorul program:

const exp = /\d{4}-\d{2}-\d{2}/g;
let text = "Publication Date: 2021-09-06\nUpdated on: 2021-09-14"

text = text.replace(exp, function(date){
   const arr = date.split("-");
   return `${arr[2]}.${arr[1]}.${arr[0]}`;
});
console.log(text);

Aici extragem toate potrivirile cu expresia regulată /\d{4}-\d{2}-\d{2}/g. În funcția de înlocuire, obținem potrivirea prin parametrul date și, folosind funcția split(), o despărțim în trei părți folosind separatorul liniei de dialog "-":

const arr = date.split("-");

Prin urmare, obținem un tablou format din trei componente ale datei. Apoi returnăm data în alt format:

return `${arr[2]}.${arr[1]}.${arr[0]}`;

În final, vom obține textul:

Publication Date: 06.09.2021 Updated on: 14.09.2021

← Lecția anterioară Lecția următoare →