Regular Expressions
Husamettin Elalmis
Last updated
Husamettin Elalmis
Last updated
Regular Expressions
Merhaba arkadaşlar, bu yazıda sizlere Regular Expressions kavramından bahsecedeğim.
Regular Expressions Nedir?
Düzenli ifade patternleri anlamına gelir.
String arama ve değiştirme işlemlerinde kullanılır.
Kendine has pattern syntax dili vardır.
Regular Expressions Pattern Dili
Temel Eşleştirmeler
"Bir dalda bir Kartal biri kalkar biri sarkar 123 adet kartalın 12 tanesi 3 metredir" cümlesini örnek alalım,
Regular expression, case sensitive'dir. Yani büyük küçük harf duyarlıdır.
"bir" kelimesini aradığımızda sırasıyla b, ardından I, ardından r harflerinin geldiği yerleri bize döndürür, özetle basit bir kelimeyi "bir" yazarak arayabiliriz.
bir geçen yerleri bul
Meta Karakterler
Meta karakterler, gruplamak ve/veya joker kullanmak için kullanılır.
Meta Karakter
Açıklama
.
Herhangi bir karakter yerine geçer (satır sonu hariç)
[]
Karakter grubunu temsil eder
[^]
İçermeyen karakter grubunu temsil eder
*
Sıfır adet veya daha fazla tekrar eden karakteri temsil eder
+
1 veya daha fazla tekrar eden karakteri temsil eder
?
Opsiyonel karakteri temsil eder. Hiç geçmeyedebilir.
{n,m}
En az n eleman, en fazla m eleman olanı temsil eder
(xyz)
Karakter grubunu temsil eder, xyz karakterlerini gruplar
|
Alternatif (of) anlamında kullanılır
\
Escape karakter kullanmak içindir ([]{}().*+?^$\|)
^
Satır başını temsil eder
$
Satır sonunu temsil eder
İlk harfi önemli değil, ir olan yerleri bul
a ile f arasındaki karakteri içerenleri bul (a,b,c,d,e,f)
l ile başlamayan kar kelimelerini bul (kalkar pas geçildi)
a harfinin tekrar eden yerlerini bul
a harfinin 1 veya daha fazla tekrar eden r ile biten yerleri bul
a rile biten, K harfi ile başlıyorsa da dahil edebilirsin
[0-9] arası rakamlardan herhangi 2 tanesi yanyana gelmiş olanlar
[0-9] arası rakamlardan herhangi 2 tanesi yanyana gelmiş olanlar, en fazla 3 tanesi yanyana gelebilir olanlar
[0-9] arası rakamlardan 2 tanesi yanyana gelmiş ve uzunluğu (begin) 2 karakter olan
B veya s karakterlerini içeren
B veya K veya 2 karakterlerini içeren
Satır başı B veya b ve ardından ir ile başlıyorsa
Satır sonu dir ile bitiyorsa
Kısayol Karakter Setleri
Kısayol
Açıklama
.
Herhangi bir karakter içeriyorsa
\w
[a-zA-Z0-9_] karakter setini temsil eder
\W
Alfanumerik olmayan karakterleri temsil eder [^\w]
\d
[0-9] geçen digitler
\D
Digit olmayanlar [^\d]
\s
Whitespace karakterler [\t\n\f\r\p{Z}]
\S
Whitespace olmayan karaketerler [^\s]
En az 5 karakter uzunluğunda olanlar
3 karakter uzunluğunda olanlar
Tüm digit olan karakterler
2 karakter uzunluğunda digit olan karakterler
Program.cs
using System;
using System.Text.RegularExpressions;
namespace RegexArge
{
class Program
{
static void Main(string[] args)
{
Console.BackgroundColor = ConsoleColor.White;
Console.Clear();
string input = "Bir daldaa bir Kartal biri kalkar biri saarkar 123 adet kartalın 12 tanesi 3 metredir"; var patterns = new string[] { "bir", ".ir", "[a-f]", "[^l]kar", "[a]*", "[a]+r", "[K]?ar", "[0-9]{2}", "[0-9]{2,3}", @"\b[0-9]{2}\b", "(b|s)", "(B|K|2)", @"^(B|b)ir", "dir$", @"\w{5}", @"\b\w{3}\b", @"\d", @"\b\d{2}\b" }; var line = 0; foreach (var pattern in patterns)
{
var regex = new Regex(pattern);
MatchCollection matches = regex.Matches(input);
Console.SetCursorPosition(0, line);
Console.ForegroundColor = ConsoleColor.Blue;
Console.WriteLine(pattern);
Console.SetCursorPosition(0, line + 1);
Console.ForegroundColor = ConsoleColor.Black;
Console.WriteLine(input);
foreach (Match match in matches)
{
var val = match.Value;
Console.SetCursorPosition(match.Index, line + 1);
Console.ForegroundColor = ConsoleColor.Red;
Console.Write(val);
}
line += 3;
}
Console.ReadLine();
}
}
}
Sonuç
Bu dokumanda Regular Expressions kavramını uygulamalı görmüş olduk
Text ayıklama, eşleştirme, değiştirme işlemlerinde sıkça kullanılır.
Regex patternlerin yelpazesi çok geniş olup, zamanla el refleksi oluşmaktadır.
Saygılarımla,
Hüsamettin ELALMIŞ – 02.07.2022
husamettin.elalmis@arksoft.com.tr