mIRC Scripting  
 
  Regex kullanimi 15.03.2025 05:36 (UTC)
   
 
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,bratb)
$regex(arata rat a,bratb)
$regex(arata rata,bratb)
$regex(arata rata,ratb)

vs..

B :
Kelime içeriyorsa 1 değerini döner b deki gibi space'e gerek yoktur.
$regex(crate,cBratBe)

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 .
__________________
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Bugün 5 ziyaretçi (10 klik) kişi burdaydı!
Bu web sitesi ücretsiz olarak Bedava-Sitem.com ile oluşturulmuştur. Siz de kendi web sitenizi kurmak ister misiniz?
Ücretsiz kaydol