Gelişmiş Düzenli İfadelerin Derinliğine Dalış
Normal İfadeler (regex), kalıp eşleştirme ve metin işleme için güçlü araçlardır. Temel bilgilerin ötesine geçen bu eğitim, karmaşık metin işleme görevlerini yerine getirmek için gelişmiş normal ifade kavramlarını araştırıyor.
Gelişmiş Bakış İddiaları
Etrafı inceleme iddiaları, bir modeli yalnızca öncesinde veya sonrasında başka bir model izliyorsa, etrafındaki metni eşleşmeye dahil etmeden eşleştirmenize olanak tanır.
- Pozitif Bakış
(?=...)
: Desenin yalnızca belirtilen ifade tarafından takip edilmesi durumunda eşleşmesini sağlar. - Negatif Bakış
(?!...)
: Desenin yalnızca belirtilen ifade tarafından takip edilmemesi durumunda eşleşmesini sağlar. - Pozitif Geriye Bakış
(?<=...)
: Desenin yalnızca belirtilen ifadenin önünde olması durumunda eşleşmesini sağlar. - Negatif Geriye Bakış
(?<!...)
: Desenin yalnızca belirtilen ifadenin önünde olmaması durumunda eşleşmesini sağlar.
Örnek:
(?<=\$)\d+
Bu normal ifade, önünde dolar işareti bulunan sayılarla eşleşir.
Atom Grupları
Atomik gruplar, grup içinde bir eşleştirme girişiminde bulunulduğunda geri izlemeyi engeller. Gereksiz geri izlemeyi önleyerek performansı artırmak için kullanışlıdırlar.
Örnek:
(?>\d+)\b
Bu normal ifade, bir basamak dizisini atomik grup olarak eşleştirerek geri izlemeyi önler.
Geri referanslar
Geri referanslar, daha önce yakalanmış bir grubu normal ifade kalıbınızda yeniden kullanmanıza olanak tanır. Bu, tekrarlanan alt dizeleri eşleştirmek için kullanışlıdır.
Örnek:
(\b\w+)\s+\1
Bu normal ifade, ardından aynı kelimenin geldiği bir kelimeyle eşleşir.
Adlandırılmış Gruplar
Adlandırılmış gruplar, yakalanan gruplara adlar atamanıza olanak tanıyarak normal ifadenizi daha okunabilir hale getirir ve eşleşen verilere başvurulmasını kolaylaştırır.
Örnek:
(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})
Bu normal ifade, tarihleri YYYY-AA-GG biçiminde eşleştirir ve yıl, ay ve gün gruplarını adlandırır.
Özyinelemeli Desenler
Özyinelemeli desenler, normal ifadenin dengeli parantezler gibi iç içe geçmiş yapılarla eşleşmesine olanak tanır. Bu, bazı normal ifade motorları tarafından desteklenen gelişmiş bir özelliktir.
Örnek:
\((?>[^()]+|(?R))*\)
Bu normal ifade dengeli parantezlerle eşleşir.
Regex'in Farklı Programlama Dillerinde Kullanımı
Regex, çoğu zaman sözdizimi ve yeteneklerde küçük değişikliklerle birlikte birçok programlama dilinde desteklenir. İşte Python ve JavaScript'teki örnekler:
Python Örneği
import re
# Match a word followed by the same word
pattern = r'(\b\w+)\s+\1'
text = 'hello hello world'
match = re.search(pattern, text)
if match:
print('Match found:', match.group())
else:
print('No match found')
JavaScript Örneği
// Match a word followed by the same word
const pattern = /(\b\w+)\s+\1/;
const text = 'hello hello world';
const match = text.match(pattern);
if (match) {
console.log('Match found:', match[0]);
} else {
console.log('No match found');
}
Çözüm
Etrafı inceleme iddiaları, atomik gruplar, geri referanslar, adlandırılmış gruplar ve özyinelemeli desenler gibi gelişmiş normal ifade kavramları, metin işleme yeteneklerinizi önemli ölçüde geliştirebilir. Bu tekniklere hakim olarak, karmaşık eşleştirme ve manipülasyon görevlerinin üstesinden daha yüksek verimlilik ve hassasiyetle ulaşabilirsiniz.