Regex (Regular Expressions) Nedir?
Regex (regular expressions), metin verilerinde belirli desenleri tanımlamak için kullanılan özel bir dildir. Bu desenler metin içinde arama, eşleştirme, değiştirme ve bölme gibi işlemleri gerçekleştirmek için kullanılır. Metin tabanlı verilerle çalışırken büyük ölçüde kullanışlıdır ve birçok programlama dilinde (örneğin C#, Python, JavaScript), metin işleme işlemlerini hızlı ve esnek bir şekilde gerçekleştirmek için sıkça kullanılır. Regular ifadeler, karmaşık metin işleme görevlerini daha verimli bir şekilde çözmek için güçlü bir araçtır ve geliştiricilere büyük bir esneklik sağlar.
İçindekiler
Neden Regex Öğrenmeliyiz?
Regular Expressions (Düzenli İfadeler), metin işleme ve desen eşleştirme gibi çeşitli görevleri gerçekleştirmek için güçlü bir araçtır.
- Metin İşleme: Metin verilerinde desenleri tanımlamak ve bu desenlere göre arama, eşleştirme, değiştirme ve bölme gibi işlemler yapmak için kullanılır. Metin tabanlı verilerle çalışırken sık sık karşılaşılan görevleri otomatikleştirmek için çok kullanışlıdır.
- Form Doğrulama: Girdi formlarındaki verileri doğrulamak için yaygın bir araçtır. Örneğin, e-posta adresi, telefon numarası veya posta kodu gibi belirli bir formata uygun olup olmadığını kontrol etmek için Regular Expressions kullanılabilir.
- Veri Çıkarma: Metin içinde belirli bilgileri (örneğin, URL’ler, fiyatlar, tarihler) bulmak ve çıkarmak için Regular Expressions kullanılabilir. Bu, veri madenciliği ve bilgi toplama gibi çeşitli uygulamalarda faydalı olabilir.
- Dize Manipülasyonu: Dize işleme ve manipülasyonunda kullanılabilecek güçlü bir araçtır. Örneğin, belirli bir deseni içeren dizeyi değiştirmek veya belirli bir desene göre dizeyi bölmek için Regular Expressions kullanılabilir.
- Programlama Dilleri Bağımsızlığı: Birçok programlama dilinde desteklenir ve aynı desenler genellikle farklı dillerde kullanılabilir. Bu, farklı diller arasında geçiş yaparken veya çoklu platform uygulamaları geliştirirken faydalı olabilir.
Temel Yapı Taşları
C#’ta düzenli ifadeleri etkili bir şekilde kullanmak için sözdizimini ve yapı taşlarını anlamak önemlidir. Bu bölümde, C# Regex sözdiziminin temellerini, metni eşleştirmeye, yakalamaya ve değiştirmeye yönelik temel öğeleri ele alacağız ve eşleştirme kalıplarına başlamanız için size bir örnek vereceğiz.
- ^: Bir satırın başlangıcını belirtir.
- $: Bir satırın sonunu belirtir.
- .: Yeni satır karakterleri dışındaki her karakterle eşleşir.
- *: Önceki öğeyle 0 veya daha fazla kez eşleşir.
- +: Bir önceki karakterin en az bir veya daha fazla tekrarını belirtmek için kullanılır.
- {n}: Bir önceki karakterin tam olarak n kez tekrarını belirtmek için kullanılır.
- [abc]: a, b veya c karakterlerinden herhangi biriyle eşleşir.
- (abc): Parantez içinde belirtilen karakter dizisini bir grup olarak eşleştirmek için kullanılır. Aslında “Contains” metoduna eş değer diyebiliriz.
Düzenli İfadelerde Olmazsa Olmaz 3 Metot
Eşleştirme (Matching):
Bir regular ifadenin bir metin içindeki varlığını bulmaya ve eşleşen kısımları belirlemeye yönelik bir işlemdir. Regex.IsMatch() yöntemi, bir metnin bir regular ifade ile eşleşip eşleşmediğini kontrol eder. Eşleştirme işlemi, metnin tamamında veya belirli bir bölgesinde gerçekleştirilebilir. Örneğin:
string input = "Mataramda Tuzlu Su";
string pattern = "Tuz";
bool isMatch = Regex.IsMatch(input, pattern); //True
Yakalama (Capturing)
Bir regular ifadenin belirli bir kısmını ayırmak veya yakalamak için kullanılır. Parantez içinde belirtilen kısımlar, gruplar olarak adlandırılır ve eşleşen metin içindeki bu gruplar ayrı ayrı erişilebilir hale gelir. Yakalama, Match.Groups özelliği kullanılarak gerçekleştirilir. Örneğin:
string input = "Abdullah Özgün";
string pattern = @"(\w+)\s(\w+)";
Match match = Regex.Match(input, pattern);
if (match.Success)
{
string firstName = match.Groups[1].Value;
string lastName = match.Groups[2].Value;
}
Replacing (Değiştirme)
Değiştirme işlemi, bir metindeki belirli desenleri başka bir metinle değiştirmek için kullanılır. Regex.Replace() yöntemi, bir metindeki tüm eşleşmeleri değiştirir ve değiştirilmiş metni döndürür. Örneğin:
string input = "Nereye gittiğini bilmiyorsan, hangi yoldan gittiğinin hicbir önemi yok";
string pattern = @"\b\w{6}\b"
MatchCollection matches = Regex.Matches(input, pattern);
foreach (Match match in matches)
{
Console.WriteLine($"{match.Value} \t"); //Nereye yoldan hicbir
}
Günlük Hayattan Örnekler
E-posta Doğrulaması için Basit Bir Regex:
E-posta doğrulama, geliştiricilerin karşılaştığı yaygın bir görevdir. Aşağıdaki örnek, bir giriş dizesinin geçerli bir e-posta adresi olup olmadığını kontrol eden temel bir normal ifade modelini göstermektedir:
using System;
using System.Text.RegularExpressions;
class MainClass
{
public static void Main(string[] args)
{
string input = "abdullah.ozgun@verimix.net";
string pattern = @"^\S+@\S+\.\S+$";
//Girişin geçerli bir e-posta adresi olup olmadığını kontrol eder
bool isValidEmail = Regex.IsMatch(input, pattern);
Console.WriteLine(isValidEmail); // Output: True
}
}
Regex ile Web Adresini Yakalama
Regex kullanarak bir HTML metni bloğundan belirli bilgilerin nasıl çıkarılacağını gösterir. Bir HTML sayfasındaki bağlantılar listesinden tüm URL’leri çıkaran bir örnek yapalım.
using System;
using System.Text.RegularExpressions;
class MainClass
{
public static void Main(string[] args)
{
string input = @"<a href=""https://www.verimix.com.tr"">Örnek 1</a>
<a href=""https://www.verimix2.com.tr"">Örnek 2</a>
<a href=""https://www.verimix3.com.tr"">Örnek 3</a>";
string pattern = @"href=""(https?://\S+?)""";
// Giriş dizesindeki her URL'yi bulue ve çıktısını alır
MatchCollection matches = Regex.Matches(input, pattern);
foreach (Match match in matches)
{
Console.WriteLine(match.Groups[1].Value); // Output: Saptanan URL
}
}
}
Metin İşleme ve Veri Doğrulama İşlemlerinde Verimlilik için Regex
Regüler ifadeler, karmaşık arama ve değiştirme işlemlerini kolaylaştırır. Ancak, bazen karmaşık desenlerin oluşturulması ve anlaşılması zor olabilir. Bu yüzden, regex kullanmadan önce dikkatlice düşünmek ve test etmek önemlidir. Sonuç olarak, regüler ifadelerin doğru şekilde kullanılmasıyla metin işleme ve veri doğrulama işlemleri daha verimli hale gelir.
Son olarak bu makalemizde yaptığımız dışında yüzlerce regex formatları bulunmaktadır, bu formatlara global anlamda en büyük arşivi barındıran regexlib.com adresinden ulaşabilirsiniz.
Mutlu düzenli ifadeler. 😊