|
Notlar:
ircforumlari.net için 5-Eylül-2005 tarihinde Alience
tarafından yazılmıştır.
Buradaki yazılanlar en az 3 tane yabancı kaynaktan (genelde
php kaynakları)
ve kendi deneyimlerimin sonucu mümkün olduğunca basit,kısa ve
karşılaştırmalı
ele alınmıştır.
Expression (yani türkçesi ifade) yazıda aranacak kelime cümle
ve veya harf olarak kullanıldı
String en basitinden düz cümle demektir :) .
Regex nedir?:
En basitinden ve anlayacağınız şekilde string karşılaştırma,string
içi arama işlemini gerçekleştirmemizi sağlayan komut
diyebiliriz. Mirc'de aynı işi yapan operatörler var ama regex
hem daha hızlıdır hemde çok daha esnek bir yapıda olduğundan
büyük kolaylık sağlar şöyleki:
if *deneme* iswm $1- veya if deneme isin $1-
ile
if $regex($1-,deneme) veya if $regex($1-,deneme) == 1
aynıdır.
Regex kullanımı:
Regex'in en basit kullanımı ile mirc help te $regex([name],
text, re) olarak açıklandığını biliyoruz.
burada genel operatörler'i anlatmaya çalışacağım. Yazacağım
komutlar $regex(bu bir örnektir,bir) şekline olacak bunu siz
aliasese veya nerede kullanmak istiyorsanız ona göre ayarlamak
zorundasınız şöyleki hemen sonucu görmek isityorsanız en basit
yöntem mirc de komut olarak //echo : $regex(bu bir
örnektir,bir) yazıp entere basmanız eğer bir yazısı "bu bir
örnektir" de varsa ki var 1 değeri döner, eğer bar $regex(bu
bir örnektir,bar) yazarsak 0 değeri döner.
Operatörler:
1: Basit kullanım:
Regexin en basit kullanımı yukarıdada bahsedildiği gibi $regex(string,expression)
şeklindedir string içinde expression yazılan yerdeki kelime
veya cümle varsa 1 olarak döner yoksa 0 olarak döner.
2: "." Herhangi bir karakter operatörü:
expression da "." herhangi bir karakter yerine geçer şöyleki:
$regex(bu bir örnektir,bir) yerine $regex(bu bir örnektir,b.r)
yazarsak yine 1 değeri döner anlamıda b ile r arasına bir
karakter gelecek ama ne olduğu önemli değil sadece bir
karakter gelmesi yeterli.
3: Tekrar operatörleri
3.1: "*" Hiç yok yada birden çok olabilir
Operatörü:
Şimdi bu başlıkta ne demeyin "*" aynı başlıktaki işi yapıyor,
aranan string konulduğu yerin önündeki harfle devam ediyorsa
veya devam etmiyorsa regex 1 olarak döner. kısacası i*
yazdıkmı orada sadece i harfi olabilir veya tekrar eder
şekilde olabilir (örn: iiiiiiiiiii gibi.) bu durumda 1 değeri
döner, veya //echo : $regex(bu br örnektir,b*r) gibi arada
birşey olmasa dahi 1 değeri döner. Daha iyi anlamanız için
örnekler aşağıda.
Örnekler:
//echo : $regex(bu bir örnektir,bi*)
//echo : $regex(bu br örnektir,b*r)
//echo : $regex(bu br örnektir,ba*r)
//echo : $regex(bu biiiiiiiir örnektir,bi*r)
//echo : $regex(bu biiiiiiiiaaiir örnektir,bi*r)
3.2: "+" Bir tane veya birden çok olabilir
operatörü:
"*" operatörünün hemen hemen aynısı ama tek farkı i+ gibi
yazdıkmı en az bir i veya birden çok iiiiiiiiiiiiiii gibi
devam edeni görmesi ama i harfi olmadımı * operatörü yerine 1
değilde 0 dönmesi (başlıklardan anlaşıldığı üzere * da hiç
yok, + da bir veya daha fazla).
farkı ayırabileceğiniz örnekler:
//echo : $regex(bu br örnektir,ba*r)
//echo : $regex(bu br örnektir,ba+r)
//echo : $regex(bu bir örnektir,b*r)
//echo : $regex(bu bir örnektir,b+r)
3.3: "?" Hiçolmayabilir yada birtane
olabilir operatörü:
"." operatöründen tek farkı yerine herhangi bir karakter gelme
zorunluluğu olmaması.
Farkları anlamanız için örnekler:
$regex(bu bir örnektir,b.r)
$regex(bu bir örnektir,b?r)
$regex(bu br örnektir,b.r)
$regex(bu br örnektir,b?r)
3.4: "{..}" uzunluk operatörü:
tanımlama şekilleri {uzunluk}, {min,max}, {min, }şekillerinde
olabilir. Regex'te br{3} gibi belirtiğimiz zaman aranan
stringin içinde brrrr gibi br den sonra en az 3 tane son
yazılan karakterden olmalı ki regex 1 değeri dönsün. Kısacası
+ operatörünün hemen hemen aynısı ama farkı tekrar eden
sayıların aramasını bizim sınırlandırabilmemiz.
[color=blue]//echo : $regex(bu brr örnektir,br{3})
//echo : $regex(bu brrr örnektir,br{3})
//echo : $regex(bu abrbrbr örnektir,a(br){3}) ;buda br nin
grup şeklinde devam etmesi () grup operatörü ne işe yaradığı
aşağıda yazıyor.
4: "|" veya Operatörü:
if a == b || a == c dekindeki aynı mantık a b ye eşit olabilir
veya a c ye eşit olabilir, regexte $regex(deneme bu bir
örnektir,bar|bir) yazarsak "bu bir örnektir" yazısında "bar"
yok ama "bir" var ve regex 1 değeri olarak döner.
5: "^" başlama Operatörü:
^ önüne konulan expression aranan stringin ilk kelimesi ise 1
değeri döner, eğer yukarıdaki örneklerdeki gibi "bir"
kelimesini ararken $regex(bu bir denemedir,^bir) şeklinde
yazarsak 0 değeri döner ama $regex(bu bir denemedir,^bu bir)
şeklinde yazarsak 1 değeri döner, Özetle bu* iswm bu bir
denemedir ile aynı işlemi yapıyor.
6: "$" bitme Operatörü:
^ operatörü ile aynı olup tek farkı aranan string'in o
expression ile bitmesi gereklidir. Özetle $regex(bu bir
denemedir,denemedir$) veya $regex(bu bir denemedir,dir$)
yazarsak 1 değerleri döner, yani if *dir iswm ile aynıdır.
6: "[[: :]]" Karakter sınıfı Operatörleri:
kullanımları $regex(string,[[:operatör:]])
Operatörleri ve anlamları:
alnum : yazı karakterleri ve sayılar
alpha : sadece yazı karakterleri
blank : space veya tab.
cntrl : kontrol karakterleri (ASCII de 0177 ve 040 tan duşuk
karakterler)
digit : sayılar
lower : küçük harf
space : boşluk, $cr (carriage return) , $crlf (yeni satır),
tab
upper : büyük harf
xdigit : hexadesimal sayılar: 0--9, a--f, A--F
Örnekler:
//echo - $regex(AAAA23 $+ $cr,[[:space:]])
//echo - $regex(AAAA23,[[:space:]])
//echo - $regex(AAAA23,[[:digit:]])
//echo - $regex(AAAA,[[:digit:]])
vs..
7: "-" Aralık Operatörü:
Belli aralıklari karşılaştırmaya yarar 1-9,a-z,a-c gibi
sırasıyla 1 den 9 a kadar, a dan z ye kadar kücük harfler, a
dan c ye kadar kücük harfler'i arar.
Örnekler:
//echo - $regex(3,[1-5])
//echo - $regex(5,[1-5])
//echo - $regex(8,[1-5])
8: "()" Grup Operatörü:
Yukarıda bir örnekte bahsetiğim gibi aradığınız bir
expression'u gruplamak için kullanılır br* yazarsak sadece r
ye göre işlem yapılır, ama (br)* yaparsak br ye göre işlem
yapar.
9: Kelime Operatörleri:
\b :
Kelime tam anlamıyla eşitse 1 değeri döner
Örnekler:
$regex(rat,\brat\b)
$regex(arata rat a,\brat\b)
$regex(arata rata,\brat\b)
$regex(arata rata,rat\b)
vs..
\B :
Kelime içeriyorsa 1 değerini döner \b deki gibi space'e gerek
yoktur.
$regex(crate,c\Brat\Be)
\s :
Herhangi bir boşluk karakteri varsa 1 değeri döner.
$regex(deneme mesajı,\s)
\S :
\s nin tam tersi boşluk yoksa 1 döner. $regex(deneme,\S)
\w :
Herhangi kelime sayılabilecek karakter içeriyorsa 1 değeri
döner.
$regex(deneme,\w)
\W :
\w nin tam tersi.
$regex(bunu dene,\W)
\d :
Herhangi bir sayı varsa 1 değeri döner
$regex(deneme 20,\d)
\D :
Herhangi bir sayı yoksa 1 değeri döner
$regex(deneme 20,\D)
Extra not: regexte \, {, gibi karakterleri aramak için başına
\ koymamız gerekli böylece onları operatör değilde karakter
olarak görür. Bu 3. gönderişim allahtan hdd yi yedeklerken cd
ye kaydetmişim :D.
|