Konu: Regular Expressions ( Regex ) Tarih: 18.03.2025
Merhaba sevgili IRC Rehberi kullanıcıları, bugün sizlere anlatmak istediğim konu başlıktada gördüğünüz gibi
regex kullanımı olacaktır. Forumda bununla ilgili bir anlatım göremediğim için elimden geldiğince size anlatmaya çalışacağım.
mIRC, IRC (Internet Relay Chat) için kullanılan bir istemcidir ve kullanıcıların çeşitli otomasyon ve özelleştirme işlemleri yapmasına olanak tanır.
mIRC scripting, bu istemcinin işlevselliğini artırmak için kullanılan bir programlama dilidir. Regex ise metinleri analiz etmek ve işlemek için kullanılan güçlü bir araçtır.
Regex, belirli bir desenle eşleşen metin parçalarını bulmak için kullanılan bir dildir. Metin içinde arama yapma, değiştirme ve doğrulama gibi işlemler için kullanılır.
mIRC scripting içinde regex kullanmak için $regex(text,eşleşme) şeklinde kullanabilirsiniz. Regex ile
metin arama ve eşleştirme işlemleri yapabilirsiniz.
Örnek; Kod
alias testRegex {
var %text = "Merhaba, bugün hava çok güzel."
var %pattern = "h[a-z]+"
if ($regex(%text, %pattern)) {
echo -a Eşleşme bulundu: $regml(1)
}
} Bu örnekte, "h" ile başlayan ve ardından gelen küçük harflerden oluşan kelimeleri arar.
mIRC Regex Fonksiyonları; $regex: Metinde regex deseni arar.
$regml: Eşleşen metni döndürür.
$regsub: Eşleşen metinleri değiştirmek için kullanılır.
Örnek; Kod
alias replaceText {
var %text = "mIRC çok eğlenceli."
var %pattern = "eğlenceli"
var %replacement = "harika"
var %result = $regsub(%text, %pattern, %replacement)
echo -a Sonuç: %result
} Bu örnek, "eğlenceli" kelimesini "harika" ile değiştirir.
$regsub ile ilgili bir örnek; Kod
on *:TEXT:*:#:{
var %metin = $1-
var %yeniMetin = $regsub(%metin,cat,dog)
if (%yeniMetin != %metin) {
msg $chan Eski Metin: %metin
msg $chan Yeni Metin: %yeniMetin
}
} Kod
var %yeniMetin = $regsub(%metin,cat,dog): %metin
İçindeki tüm "cat" kelimelerini "dog" ile değiştirir.
Regex ile daha karmaşık desenler oluşturabilirsiniz. Örneğin, e-posta adreslerini doğrulamak için aşağıdaki deseni kullanabilirsiniz:
Kod
var %emailPattern = "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$" Regex Deseni İçindeki Parametreler; Karakterler: a, b, 1, 2 gibi belirli karakterler.
Boşluk: \s (boşluk, tab, yeni satır gibi boşluk karakterlerini temsil eder).
Boşluksuz: \S (boşluk olmayan karakterler).
Herhangi Bir Karakter: . (herhangi bir karakter ile eşleşir).
Başlangıç: ^ (desenin metnin başlangıcında olmasını zorunlu kılar).
Bitiş: $ (desenin metnin sonunda olmasını zorunlu kılar).
Gruplama: () (içindeki karakterleri gruplar).
Alternatif: | (veya anlamına gelir; örneğin, a|b ifadesi "a" veya "b" ile eşleşir).
Sıfır veya Daha Fazla: * (önceki öğenin sıfır veya daha fazla kez tekrarlanmasını sağlar).
Bir veya Daha Fazla: + (önceki öğenin en az bir kez tekrarlanmasını sağlar).
Sıfır veya Bir: ? (önceki öğenin sıfır veya bir kez tekrarlanmasını sağlar).
Karakter Seti: [] (belirtilen karakterlerden herhangi biri ile eşleşir). Örneğin, [abc] "a", "b" veya "c" ile eşleşir.
Karakter Aralığı: - (belirtilen aralıktaki karakterlerle eşleşir). Örneğin, [a-z] küçük harflerle eşleşir.
Dijit: \d (0-9 arasındaki rakamlarla eşleşir).
Dijit Olmayan: \D (dijit olmayan karakterlerle eşleşir).
Kelime Karakteri: \w (alfabetik karakterler, rakamlar ve alt çizgi ile eşleşir).
Kelime Olmayan Karakter: \W (kelime karakteri olmayanlarla eşleşir).
Kesirli Tekrar: {n} (önceki öğenin tam n kez tekrarlanmasını zorunlu kılar).
Aralık: {n,m} (önceki öğenin n ile m kez arasında tekrarlanmasını sağlar).
Örnek sayı deseni; Bu desen, "123-45-6789" formatında bir sosyal güvenlik numarasını doğrular.
Açıklama;
^ ile başlangıç,
\d{3} ile üç rakam,
- ile tire,
\d{2} ile iki rakam,
- ile bir tire daha,
\d{4} ile dört rakam,
$ ile bitiş belirtir.
Bazı örnekler; Kod
on *:TEXT:*:#:{
if ($regex($1-,^Hello)) {
msg $chan Metin 'Hello' ile başlıyor.
}
} Burada regex içerisinde hello ile başlayan bir cümleyi yakala diyoruz.
Kod
on *:TEXT:*:#:{
if ($regex($1,cat|dog)) {
msg $chan Eşleşen kelime bulundu: $regml(0)
}
} Burada ilk kelime cat veya dog içeriyorsa yakala diyoruz. Regex içerisinde | işareti ile arama veya eşleşmeleri arttırabiliriz.
Kod
on *:TEXT:*:#:{
if ($regex($1,[aeiou])) {
msg $chan Sesli harf bulundu: $regml(0)
}
} Burada belirtilen harfler eğer ilk kelimede içeriyorsa yakala diyoruz.
Kod
on *:TEXT:*:#:{
if ($regex($1,\d{3})) {
msg $chan Üç ardışık rakam bulundu: $regml(0)
}
} Burada rakam eşleştirmesi yapıyoruz 3 ardışık rakam varsa yakala diyoruz.
Kod
on *:TEXT:*:#:{
if ($regex($1,^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$)) {
msg $chan Geçerli bir e-posta adresi: $1
}
} Burada e-posta doğrulamak için kullanabileceğimiz formata uygun bir eşleştirme yapıyoruz.
Bu örnekler, mIRC scripting kullanarak regex ile metin eşleştirmeleri yapmanın yollarını göstermektedir. Her bir örnek, belirli bir regex deseni ile metin üzerinde nasıl işlem yapabileceğinizi gösterir. Gerisi sizin yaratıcılığınıza kalmış deneme yanılma yöntemi ile daha iyi kavrayacaksınızdır.
Regex eğitim konumuz bitmiştir. İyi forumlar dilerim.