Ana içeriğe geç

Düzenli ifade

İngilizcesi
Regular Expression
Türkçe karşılığı
normal ifade, kurallı ifade
Okunuşu
regyulır ikspreşın

Günlük kullanımda çoğunlukla İngilizcesi tercih edilir.

Güncellendi 2 dk okuma

Bu sayfayı paylaşın

Bağlantıyı gönderin, tanımı bağlantısıyla birlikte alıntılayın ya da kendi sitenizde bir kart olarak gösterin.

https://softwaredictionary.org/tr/terimler/regular-expression

Kısaca

Düzenli ifade (regex), dizeler içinde aranacak, doğrulanacak, çıkarılacak veya değiştirilecek metni tarif eden, kompakt sözdizimli bir desendir.

Düzenli ifade (regular expression) nedir?

Düzenli ifade, metni tarif etmek için kullanılan küçük bir desen dilidir. \d{3}-\d{4} deseni “üç rakam, bir tire, ardından dört rakam” anlamına gelir ve bir regex motoru bunu bir dizenin eşleşip eşleşmediğini denetlemek, bir belgedeki her eşleşmeyi bulmak, her eşleşmenin parçalarını çıkarmak veya bunları değiştirmek için kullanabilir. Neredeyse her programlama dili, metin editörü ve grep ile sed gibi komut satırı araçları düzenli ifadeleri destekler.

Desenler birkaç parçadan oluşur. Sabit karakterler kendileriyle eşleşir, [a-z] ya da \d gibi karakter sınıfları bir kümeden tek bir karakterle eşleşir, *, +, ? ve {2,5} gibi niceleyiciler (quantifier) bir şeyin kaç kez tekrarlandığını söyler, ^ ve $ bağlayıcıları (anchor) ise bir eşleşmeyi metnin başına ya da sonuna sabitler. Parantezler yakalanıp yeniden kullanılabilen gruplar oluşturur ve bayraklar davranışı değiştirir; JavaScript'te büyük/küçük harfe duyarsız eşleşme için i, tüm eşleşmeleri bulmak için g gibi.

Regex, joker karakterli bir arama filtresi gibidir: tam olarak bir sözcük aramak yerine istediğiniz şeyin biçimini tarif edersiniz. Yaygın kullanımlar arasında posta kodu gibi girdileri doğrulamak, günlük satırlarını ayrıştırmak, bir kod tabanı boyunca bir şeyleri bulup yeniden adlandırmak ve verileri temizlemek vardır. Regex'lerin ayrıca yanlış yazılması kolay ve okunması zordur, bu yüzden onları kısa tutmak, yorumlamak ve hem eşleşen hem de eşleşmeyen örneklere karşı test etmek en iyisidir.

Düzenli ifadeler sıklıkla dosya adları için kullanılan glob desenleriyle karıştırılır. Bir glob'da *.txt “.txt ile biten herhangi bir dosya” anlamına gelirken bir regex'te * “önceki öğeyi tekrarla” anlamına gelir; dolayısıyla eşdeğer regex ^.*\.txt$ olur. Regex'ler ayrıca HTML veya JSON gibi iç içe biçimleri ayrıştırmak için zayıf bir araçtır; bunlar gerçek bir ayrıştırıcı gerektirir. İç içe tekrar içeren desenler belirli girdilerde üstel zaman alabilir; bu, ReDoS olarak bilinen bir hizmet reddi riskidir.

Önemli noktalar

  • Regex, eşleşecek metnin biçimini tarif eden bir desendir.
  • Karakter sınıfları, niceleyiciler, bağlayıcılar ve gruplar temel yapı taşlarıdır.
  • Metin aramak, doğrulamak, çıkarmak ve değiştirmek için kullanılır.
  • Dosya adları için glob desenleri benzer görünür ama farklı kurallar izler.
  • Karmaşık regex'ler okunması zordur ve yavaş olabilir; bu yüzden küçük tutun ve test edin.

Örnek

JavaScript'te regex ile çıkarmak ve değiştirmekjavascript
const log = "2026-09-30 ERROR [auth] Login failed for user=ada";

// Capture the date, the level and the user name
const pattern = /^(\d{4}-\d{2}-\d{2}) (\w+) .*user=(\w+)$/;
const match = log.match(pattern);

if (match) {
  const [, date, level, user] = match;
  console.log(date, level, user); // 2026-09-30 ERROR ada
}

// Replace every digit with #
console.log("Call 555-0142".replace(/\d/g, "#")); // Call ###-####

Sık sorulan sorular

Regex neyin kısaltmasıdır?

Regex, 1950'lerdeki biçimsel dil kuramından gelen bir terim olan regular expression'ın (düzenli ifade) kısaltmasıdır. JavaScript'in RegExp nesnesinde olduğu gibi regexp yazımı da yaygındır.

Düzenli ifadeler her dilde aynı mıdır?

Temel bilgiler ortaktır, ancak ayrıntılar POSIX, PCRE, JavaScript, Python ve .NET gibi çeşitler arasında farklılık gösterir. Lookbehind, adlandırılmış gruplar ve Unicode sınıfları gibi özellikler değişir; bu yüzden bir deseni gerçekten çalışacağı dilde test edin.

E-posta adreslerini regex ile doğrulamalı mıyım?

Basit bir regex bariz yazım hatalarını yakalayabilir, ancak tamamen doğru bir e-posta deseni son derece karmaşıktır. Güvenilir denetim, adrese bir onay iletisi göndermektir.

İlgili sayfalar

Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin

Daha fazla

Ayarlar