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.