JavaScript'te Düzenli İfadelerde Yakalama Grupları
Yakalama gruplarının içeriği yalnızca değiştirme dizesinde değil, aynı zamanda düzenli ifadenin kendisinde de erişilebilir: bir şeyi yakalama grubuna koyabiliriz, ardından doğrudan düzenli ifadede, burada bu yakalama grubunun içeriğinin olması gerektiğini söyleyebiliriz.
Yakalama gruplarının içeriği numaralarıyla
erişilebilir, önlerinde ters eğik çizgi bulunur. Örneğin,
ilk yakalama grubu şu şekilde erişilebilir: \1,
ikinci yakalama grubu şu şekilde - \2, üçüncü
- \3 ve böyle devam eder.
Yukarıda yazılanların hepsinin sizin için şu an oldukça belirsiz olduğuna eminim. Bu şaşırtıcı değil, çünkü yakalama grupları düzenli ifadelerin en az anlaşılan kısmıdır. Haydi örneklerle anlamaya çalışalım.
Örnek
Diyelim ki şöyle bir dizgimiz var:
let str = 'aa bb cd ef';
İçinde ardışık olarak aynı iki harfin bulunduğu tüm yerleri bulalım. Problemi çözmek için herhangi bir harfi arayacağız, onu bir yakalama grubuna koyacağız, ardından bir sonraki karakterin bu yakalama grubunun içeriği olup olmadığını kontrol edeceğiz:
let res = str.replace(/([a-z])\1/g, '!');
Sonuç olarak değişkene şunlar yazılacaktır:
'! ! cd ef'
Örnek
Diyelim ki şöyle bir dizgimiz var:
let str = 'asxca buzxb csgd';
İlk ve son harflerin aynı olduğu tüm kelimeleri bulalım. Problemi çözmek için şu kalıbı yazacağız: harf, ardından bir veya daha fazla harf, ve sonra ilk harfle aynı olan bir harf:
let res = str.replace(/([a-z])[a-z]+\1/g, '!');
Sonuç olarak değişkene şunlar yazılacaktır:
'! ! csgd'
Pratik Görevler
Bir dizgi verildi:
let str = 'aaa bbb ccc xyz';
İçinde ardışık üç aynı harfin bulunduğu tüm alt dizgileri bulun.
Bir dizgi verildi:
let str = 'a aa aaa aaaa aaaaa';
İçinde ardışık iki veya daha fazla aynı harfin bulunduğu tüm alt dizgileri bulun.
Bir dizgi verildi:
let str = 'aaa aaa bbb bbb ccc ddd';
İçinde ardışık iki aynı kelimenin bulunduğu tüm alt dizgileri bulun.