Bu site emekli olmuştur. Arşiv amaçlı olarak BT AKADEMİ sponsorluğunda yayın hayatına devam etmektedir.




C#nedir?com
 
YAZAR HAKKINDA
Mustafa Erhan Ersoy
Mustafa Erhan Ersoy
http://www.csharpnedir.com/
İletişme geçmek için tıklayın.
14 Makalesi yayınlanmakta.
Yazar hakkında detaylı bilgi için tıklayın.
Yayınlanan diğer makaleleri için tıklayın.
İlgili etiketler:  C# / VC#/.NET Mustafa Erhan Ersoy
 
YAZI HAKKINDA
Türü : Makale
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
Seviyesi : Orta
Kategori : C# / VC#/.NET
Yayınlanma Tarihi : 28.8.2003
Okunma Sayısı : 116717
Yorum Sayısı : 6     yorum yaz
Site İçi AramaSİTE İÇİ ARAMA
Üye Girişini AçÜye GİRİŞİ
Üye girişi için tıklayın.
Kullanıcı Adı
Şifre
 
Beni her zaman hatırla
Bir hafta boyunca kullanıcı bilgilerinizi kullanıcı çıkışı yapana kadar hatırlar. (Paylaşılan bilgisayarlarda önerilmez.)
 
Şifremi / Kullanıcı Adımı unuttum.
 
.net TV RSS Serbest KÖŞE (?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
emre TAŞ
Silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
Makale Gönder Bende Yazmak İstiyorum
.net TV RSSBlogroll
Turhal Temizer
Conda install environment.yml Package 22.11.2024
Turhal Temizer
Mac OS/X Removing CUDA 22.11.2024
Burak Selim Şenyurt
Rust ile ECS Yaklaşımını Anlamak 22.11.2024
Burak Selim Şenyurt
Birlikte Rust Öğrenelim Serisi 22.11.2024
  Diğer Herşey
Sponsorlar
BT Akademi
Medya Portakal
Video Hosting Sponsoru
Csharpnedir.com bir Ineta üyesidir
Uzman Abi
Her Yönüyle C# - Sefer Algan
Düzenli İfadeler(Regular Expressions) Nedir?
 
Kapat
Sayfayı Yazdır Sık Kullanılanlara Ekle Arkadaşıma Gönder MySpace Del.Ico.Us Digg Facebook Google Mixx Reddit StumbleUpon
Regular expression bir metni düzenlemek yada metin içerisinden belli kurallara uyan alt metinler elde etmek için kullandığımız bir dildir. Bir regular expression, string tipindeki karakter topluluğuna uygulanır. Sonuç olarak substringler oluşur yada orjinal metnin bir kısmını içeren değiştirilmiş yeni metinler elde edilir.

Regular Expression’larda Kullanılan Özel Karakterler ve Etkileri

Regular expression desenleri tanımlamada kullanılan özel karakterleri örnekleri ile anlatırsak sanırım regular expressionlar daha tanıdı ve kolay gelebilir.

1.)  “.” Karakteri

Tek bir karakteri temsil eder(yeni satır karakteri hariç).
“CSharp.edir” şeklindeki bir desen CSharpnedir, CSharpNedir, CSharpSedir, CSharp3edir gibi stringleri döndürebilir.

2.)  “[]” Karakterleri

Bir arrayi yada aralığı temsil eder.
“CSharp[SNY]edir” deseni, CSharpSedir, CSharpNedir ve CSharpYedir stringlerini döndürür.
“CSharp[a-z]edir” şeklindeki kullanım aralık belirtmeye yarar.
“CSharp[0-9]edir” şeklindeki kılanlım ise sayısal aralık belirtmeye yarar.

3.)  “?” Karakteri

Kendinden önceki karakterin stringte olması yada olmamasını sağlar.
“CSharpn?edir” deseni CSharpedir yada CSharpnedir döndürür.

4.)  “\” Karakteri

Kendinden sonraki özel karakterin stringe dahil edilmesini sağlar.
“CSharpnedir\?” deseni CSharpnedir? Stringini döndürür. (Eğer “\” karakterini kullanmamış olsaydık CSharpnedi yada CSharpnedir dönerdi.)

5.)  “*” Karakteri

Kendinden önceki karakterin yada stringin hiç olmaması yada istediği sayıda olmasını sağlar.
“CSharpnedir*” deseni, CSharpnedi, CSharpnedir, CSharpnedirr, CSharpnedirrr, ... döndürür. “CSharp(nedir)*” deseni ise CSharp, CSharpnedir, CSharpnedirnedir, ... döndürür.

6.)  “{}” Karakterleri

Kendinden önce gelen karakterin belirtilen sayıda tekrar etmesini sağlar.
“C{4}Sharpnedir” deseni, CCCCSharpnedir stringini döndürür.

7.)  “^” Karakteri

Satır başını ifade eder.
“^CSharpnedir” deseni, satır başında “CSharpnedir” stringi varsa bunu döndürür.

8.)  “$” Karakteri

Satır sonunu ifade eder.
“CSharpnedir$” deseni, satır sonunda “CSharpnedir” stringi varsa bunu döndürür.

Basit Bir Tarih Deseni Yapalım

Şimdi işin pratiğine gelelim ve adım adım tarih deseni oluşturalım. Daha sonra ise oluşturduğumuz bu tarih desenini bir konsol programında kullanalım.

Tarih desenimiz bir string içerisindeki, GG/AA/YYYY formatlarındaki tarihleri yakalayacak yapıda olsun.

Önce desenimizin GG yani tarihin gün belirtilen kısmını tanımlayalım :

“(0?[1-9])”
// 1, 2, .., 9, 01, 02, ..., 09 gibi yazılmış günleri tanımlar.

“([12][0-9])”
// 10, 11, ..., 29 gibi yazılmış günleri tanımlar.

“(3[01])”
// 30, 31 günlerini tanımlar.

// Bu üç tanımı OR (|) işlemiyle
// birleştirirsek gün tanımını elde ederiz.

// Gün tanımı :
“((0?[1-9])|([12][0-9])|(3[01]))”



Şimdi desenimizin AA yani tarihin ay belirtilen kısmını tanımlayalım :

“(0?[1-9])”
// 1, 2, .., 9, 01, 02, .., 09 gibi yazılmış ayları tanımlar.

“(1[0-2])”
// 10, 11, 12 aylarını tanımlar.

// Bu iki tanımı OR işlemiyle
// birleştirirsek ay tanımını elde ederiz.

// Ay Tanımı :
“((0?[1-9])|(1[0-2]))”



Şimdi desenimizin YYYY yani tarihin yıl belirtilen kısmını tanımlayalım :

“([12][0-9][0-9][0-9])”
//1000 ile 2999 yılları arasındaki tüm yılları içerir.



Ve son olarak tanımladığımız gün, ay ve yıl desenlerini “/” ile birleştirelim :

“((0?[1-9])|([12][0-9])|(3[01]))(/)(0?[1-9]|1[0-2])(/)([12][0-9][0-9][0-9]))”



Basit Bir Test Programı Yazalım

Şimdi elde ettiğimiz tarih desenini test edebileceğimiz basit bir konsol programı yazalım. Ek bilgi olarak “?” şeklindeki bir ifadeyi desenin önüne ilave ederseniz, bir desen grubu ifade etmiş olursunuz ve birkaç deseni aynı anda kontrol edebilirsiniz.
Bu programın kaynak kodunu indirmek için tıklayın.





using System;

using System.Text.RegularExpressions;

 

class Test

{

      public static void Main()

      {

            // Regular Expression için bir desen (pattern) tanımlıyoruz :

            string tarihDeseni=@"(?((0?[1-9])|([12][0-9])|(3[01]))(/)(0?[1-9]|1[0-2])(/)([12][0-9][0-9][0-9]))";

            // Regular Expression’umuzu tanımlıyoruz :

            Regex benimRegex=new Regex(tarihDeseni);

            // Kullanıcıdan tarih içeren metni talep ediyoruz :

            Console.WriteLine("Lütfen içinde tarih olan bir metin giriniz :");

            // Tarih arayacağımız metni konsoldan alıyoruz :

            string metin=Console.ReadLine();

            // Metin içerisindeki tarihleri (birden fazla olabilir) Collection nesnesine atıyoruz :

            MatchCollection benimMatchCollection=benimRegex.Matches(metin);

            // Metin içindeki herbir tarihi ekrana yazdırıyoruz :

            foreach(Match benimMatch in benimMatchCollection)

            {

                  Console.WriteLine(benimMatch.Groups["tarih"]);

            }

            Console.Read();

      }

}

Makale:
Düzenli İfadeler(Regular Expressions) Nedir? C#, Visual C# ve .NET Mustafa Erhan Ersoy
  • Yazılan Yorumlar
  • Yorum Yaz
MAR
15
2011
hocam cep telefonu için reg ex. yazmak istiyorum 5323334455 tarzında başında sıfır olmadan.Aşağdaki kod yazı karakteri girmemesi için bir reg. ex. kodu.Bunun başında sıfır olmaması için ne eklemeliyim.Yanı kullanıcı numarayı yazarken başına 0 eklerse hataya düşmesini istiyorum. ^([0-9]*\-?\ ?\/?[0-9]*)$
AĞU
25
2008
regular expression kullanılarak yapılmış bir arama sitesi http:www.madyes.net
AĞU
24
2004
elinize sağlık...
EYL
8
2003
Duzenli ifadeler 1 ve 2 yazılarınız çok guzel olmus.
EYL
6
2003
elinize sağlık çok güzel bir yazı olmuş..
Sayfalar : 1 
Yorum yazabilmek için üye girişi yapmalısınız. Üye girişi için tıklayın.
Üye değilseniz Üyel Ol linkine tıklayarak üyeliğinizi hemen başlatabilirisniz.
 
  • Bu Konuda Son 10
  • Eklenen Son 10
  • Bu Konuda Geçmiş 10
Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor