Regular Expressions(düzenli ifadeler), metin düzenlemek veya belirlediğimiz düzene uyan alt metin parçacıkları oluşturmak için kullanılır.

Metin düzenleme olarak tanımladığımız bölüm, var olan bir metnin tamamının, belirlediğimiz düzene uymasıdır. Alt metin parçacıkları ise, metnin içinde bulmak istediğimiz ve belirlediğimiz düzene uyan bir metin olup olmadığını kontrol eder.

System.Text.RegularExpressions kütüphanesinin üyesidir.

Regular Expression Oluşturma Kuralları ve Özel Simgeler

Kural 1: Using satırına System.Text.RegularExpressions’ı ekleyelim.

Kural 2: Eğer string içerisinde \ karakterini kullanıyorsak “” dışına @ karakterini veya \ yerine \\ kullanacağız.

string desen = @”^[1-5] \ [6-9]$”
veya
string desen = “^[1-5] \\ [6-9]$”

Özel Simgeler

1. . Simgesi: Metin içerisinde bir karakterin olup olmadığını kontrol eder. “.”nın olduğu yerde en fazla bir karakter olabilir.
ÖRNEK: Zirvedeki.Beyinler -> ZirvedekiBeyinler = Zirvedeki Beyinler

2. + Simgesi: Kendisinden önce gelen karakterin en az bir kere tekrarlanması gerektiğini belirtir.
ÖRNEK: Zirvedeki +Beyinler -> Zirvedeki Beyinler = Zirvedeki Beyinler = Zirvedeki Beyinler

3. ? Simgesi: Kendisinden önce gelen karakterin en fazla bir kere gelmesi gerektiğini belirtir.
ÖRNEK: Veysel+Kizmaz -> VeyselKizmaz= VeyseKizmaz(Kalıba Uyan Başka String Yoktur)

4. * Simgesi: Kendisinden önce gelen karakterin sıfır veya daha fazla kere tekrarlanması gerektiğini belirtir.
ÖRNEK: Veysel* -> Veyse= Veysel= Veyselll
ÖRNEK: (Veysel)* Kizmaz-> Kizmaz = Veysel Kizmaz = VeyselVeysel Kizmaz

5. [] Simgesi: [] içindeki karakterlerden birinin geleceğini belirtir.
ÖRNEK: 20[0-9]8 -> 2008 = 2018 = 2028 … = 2098

6. {} Simgesi: Kendisinden önce gelen karakterin {} içinde yazıldığı sayıda tekrar edeceğini belirtir.
ÖRNEK: (ZirvedekiBeyinler){2} -> ZirvedekiBeyinlerZirvedekiBeyinler

7. ^ Simgesi: Metin başını ifade eder.
ÖRNEK: ^Zirvedeki Beyinler -> String’in başında “Z” olup olmadığını kontrol eder.
ÖRNEK: ^(Zirvedeki) Beyinler. -> String’in başında “Zirvedeki” olup olmadığını kontrol eder.

8. $ Simgesi: Metin sonunu ifade eder.
ÖRNEK: (Bitti)$ -> String’in sonunda “Bitti” olup olmadığını kontrol eder.

9. \s: Metin içerisinde boşluk olması gerektiğini kontrol eder [space].
ÖRNEK: Zirvedeki\sBeyinler -> Zirvedeki Beyinler

10. \S: Metin içerisinde boşluk olmamasını kontrol eder.

Regular Expressions’daki özel karakterler bu kadarla sınırlı değildir. En çok kullanılanları yukarıda yer almaktadır.

Örnek: Şimdi genel bir cep telefonu numarası desenlerini yapalım.
Genel özellikleri: 05 ile başlayacak, 5. Karakter 0 olmayacak, toplam 11 karakterden oluşacaktır.

Cep Telefonu Regular Expression’ının son hali: ^(05) [0-9][0-9] [1-9] ([0-9]){6}$
Açıklama:
05 ile başlayacak.
Üçüncü karakter 0-9 arasında bir değer alacak.
Dördüncü karakter 0-9 arasında bir değer alacak.
Beşinci karakter 1-9 arasında bir değer alacak (0 almayacak).
Sonraki 6 karakter 0-9 arasında değerler alacak ve 6. karakterden sonra string tamamlanacak.

Bu yazdığımız desenleri kontrol etmek için küçük bir program yazalım. Lütfen aşağıdaki kodları açıklamalarıyla inceleyiniz.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Text.RegularExpressions;

namespace DuzenliIfadeler
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
/*Telefon desenini belirledik.*/
string telefonDeseni = “^(05)[0-9][0-9][1-9]([0-9]){6}$”;

/*Telefon desenine uygun RegularExpression değişkenini oluşturduk.*/
Regex rxTelefon = new Regex(telefonDeseni);

/*textbox’a girilen değer, telefonDeseni’ne uyuyorsa uyarı ver.*/
if (rxTelefon.Match(textBox1.Text).Success)
MessageBox.Show(“Telefon numarası, desene uygundur”);
}
}
}