Zsebek a reguláris kifejezésben JavaScriptben
A zsebek tartalma nem csak a helyettesítő karakterláncban érhető el, hanem magában a reguláris kifejezésben is: berakhatunk valamit egy zsebbe, majd egyből a reguláris kifejezésben megadhatjuk, hogy itt ennek a zsebnek a tartalmának kell állnia.
A zsebek tartalma a sorszámaik alapján érhető el,
amelyek elé fordított perjel kerül. Például,
az első zseb így érhető el: \1,
a második zseb így - \2, a harmadik
- \3 és így tovább.
Biztos vagyok benne, hogy minden fent írt még nagyon homályos számotokra. Ez nem meglepő, hiszen a zsebek a reguláris kifejezések legkevésbé érthető részei. Nézzünk példákat a megértés érdekében.
Példa
Tegyük fel, hogy van egy ilyen karakterláncunk:
let str = 'aa bb cd ef';
Keressük meg benne az összes helyet, ahol bármelyik két egyforma betű áll egymás után. A feladat megoldásához keressünk bármelyik betűt, tegyük egy zsebbe, majd ellenőrizzük, hogy a következő karakter ezen zseb tartalma-e:
let res = str.replace(/([a-z])\1/g, '!');
Ennek eredményeképpen a változóba a következő íródik:
'! ! cd ef'
Példa
Tegyük fel, hogy van egy ilyen karakterláncunk:
let str = 'asxca buzxb csgd';
Keressük meg benne az összes szót, amelyekben az első és az utolsó betű megegyezik. A feladat megoldásához írjuk meg a következő mintát: betű, majd még egy vagy több betű, és végül ugyanaz a betű, mint az első:
let res = str.replace(/([a-z])[a-z]+\1/g, '!');
Ennek eredményeképpen a változóba a következő íródik:
'! ! csgd'
Gyakorlati feladatok
Adott egy karakterlánc:
let str = 'aaa bbb ccc xyz';
Keresse meg az összes részkarakterláncot, ahol három ugyanolyan betű áll egymás után.
Adott egy karakterlánc:
let str = 'a aa aaa aaaa aaaaa';
Keresse meg az összes részkarakterláncot, ahol két vagy több ugyanolyan betű áll egymás után.
Adott egy karakterlánc:
let str = 'aaa aaa bbb bbb ccc ddd';
Keresse meg az összes részkarakterláncot, ahol két ugyanolyan szó áll egymás után.