Etiketlenen üyelerin listesi

+ Yeni Konu aç
1 sonuçtan 1 ile 1 arası

Konu: Regex Regbus Kullanımı

  1. #1
    TurkServ - ait Kullanıcı Resmi (Avatar)
    Üyelik tarihi
    27.06.2019
    Yaş
    41
    Mesajlar
    28
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    Standart Regex Regbus Kullanımı

    Regex (Regular Expression (Düzenli ifadeler))



    Regular expression istenen string(düz yazı, yazı dizisi)'de expression(ifade) a göre arama, geriye dönük işlem, yapabilmemize olanak sağlar. Expression yazı topluluğundan oluşmaktadır, bu yazı topluluğu herhangi bir karakteri içerebileceği(a dan z ye kadar herhangi bir karakter) gibi özel karakterleride(metakarakterler) içerebilmektedir. Expression bir veya daha fazla string'den oluşabilmektedir.





    mIRC'de remote yada aliases'e yazmadan komut kullanımı:



    mIRC de remote yada aliasese yazmadan komutları denemeniz için / komut karakterinden bir tane daha kullanmamız gerekli //. Şöyleki if komutunu komut satırında //if $calc(2^7) == 128 { echo ok } olarak kullanabiliriz,2^7 (anlamı 2 üzeri 7) 128'e eşitse ok mesajını gösterir. Fakat biz mIRC de komut satırında en çok //echo komutunu kullanacağız. /echo komutunun kullanımını hatırlayalım /echo "renk kodu" "parametre/pencere" mesaj şeklindedir, en çok kullanacağımız //echo -s mesajınız statüste gözükür, //echo -a mesajınız aktif pencerede gözükür. //echo $calc(2^7) yazdığımızda * /echo: insufficient parameters mesajı gelir bunun sebebi $calc(2^7) nin 128 dönmesi ve mIRC ninde bunu echo komutunun renk kodu olarak algılamasıdır. Hata mesajını görmemek için //echo "renk kodu" $calc(2^7) kullanmalı yada //echo "herhangi bir karakter" $calc(2^7) kullanmalıyız.

    renk kodu'na örnek: //echo 7 $calc(2^7)

    herhangi bir karaktere örnek: //echo : $calc(2^7)

    Ben (Alience) echo komutunu //echo : veya //echo - şeklinde kullanmayı yeğelemekteyim ve komut örneklerinide o şekilde vereceğim.





    mIRC'de regex kullanımı:



    mIRC de regex'i en basit hali ile $regex(string,expression) şeklinde kullanabiliriz, diğer bir kullanma şekli $regex("regml adı",string,expression) şeklindedir. regml regular expression match list (regular expression eşleşen listesi)'dir, mIRC son kullandığınız elli(50) tane regex listesini tutar bunlarıda $regml ile öğrenebilirsiniz. Regml yi biraz daha açmak gerekirse; $regml ile regex'te stringin nerensinin expressiona denk geldiğini görebilirsiniz. $regml kullanmak için expression'u (expression) şeklinde parantez içinde kullanmalısınız, $regml yi kullanır iken $regml(0) veya $regml(1) yerine regex'e "regml adı" verip kullanmanızı öneririm.

    örnekler:

    //echo : $regex(Sentinel v1.0 By Alience,By) ,komutu : 1 değerini döner yani regular expressin string'de By expressinunu buldu.

    //echo : $regex(bir,Sentinel v1.0 By Alience,By) ,komutu : 1 değerini döner //echo : $regml(bir,0) yazar isek değerinin : 0 olduğunu görürüz yani mIRC eşleşen listesine By ı yükleyemedi.

    //echo : $regex(bir,Sentinel v1.0 By Alience,(By)) , komutu yine : 1 değerini döner fakat //echo : $regml(bir,0) : 0 değerini değilde : 1 değerini dönmüştür bunu da görmek için //echo $regml(bir,1) komutunu girer isek "By" expressionunun eşleştiği stringi görebilirz. //echo komutunu burada //echo : şeklinde kullanmadım çünkü $regml(bir,1)'in rakam dönmeyeceğini ve /echo nun hata vermeyeceğine eminim.



    örneği biraz daha açalım expression olarak (/(?<=^| )(.)/g) kullanıcam bunu ne anlama geldiğini bilmiyorsanız daha sonra öğreniceksiniz:

    //echo regex degeri: $regex(bir,Sentinel v1.0 By Alience,(/(?<=^| )(.))/g) toplam regml: $regml(bir,0)

    komutu "regex degeri: 1 toplam regml: 8" stringini gösterir bunun anlamı regex te istediğimiz expression var ve eşleşen 8 tane değerimiz var.

    bu 8 değeri görmek için:

    //var %i = 8 | //while %i { //echo $+(%i,:,$regml(bir,%i)) | //dec %i 1 }

    komutunu kullanır isek:

    8:A

    7:A

    6:B

    5:B

    4:v

    3:v

    2:S

    1:S

    8 değeri görme komutu karışık geldi ise sırası ile 1 den 8 e kadar //echo $regml(bir,1) ... //echo $regml(bir,8) komutlarını da deneyebilirsiniz.





    mIRC de regsub kullanımı:



    $regsub([regml adı], string, expression, "değiştirilecek string/karakter", %variable)

    Regsub $regex karşılaştırmasını yapar ve eşleşen karakter yada stringleri "değiştirilecek string/karakter" ile değiştirerek, değiştirdiği kadar sayıyı döner, kısacası $regex ile aynı değeri döner fakat değiştirilen karakter yada stringi %variable ye kaydeder

    //echo : $regsub(Alience nasilsin?,e,a,%deger) , komutu 1 değerini döner

    //echo : $regsub(Alience nasilsin?,/e/g,a,%deger) , 2 değerini döner

    //echo %deger komutunu yazdığımızda çıkan string:

    Alianca nasilsin?





    mIRC de regsubex kullanımı:



    $regsubex([regml adı], string, expression, "değiştirilecek string/karakter/geriye dönük referans")

    Hemen hemen $regsub ile kullanımı ile aynıdır farkı kaç tane eşleştiğini değilde değiştirilmiş halde stringi vermesidir.

    örn:

    //echo : $regsubex(Alience nasilsin?,e,a) , : Aliance nasilsin? döner.

    //echo : $regsubex(Alience nasilsin?,/e/g,a) , : Alianca nasilsin? döner.



    "değiştirilecek string/karakter/geriye dönük referans"' ta kullanabileceğiniz geriye dönük referanslar:

    a) \n, n yerine herhangi bir rakkam yazarsanız eşleşen değerleri döner. bknz: geriye dönük referans

    b) \n yazarsanız karşılaşılan referansın numarasını döner. Geriye dönük referanslarda ahta yaparsanız nerede hata yaptığınız bulmak için iyi bir yöntemdir.

    örn:

    //echo : $regsubex(Alience nasilsin?,/e/g,\n) ,: Ali1nc2 nasilsin?



    c) \t herhangi bir text eşleşmesini döner expresionu () parantezler içinde yazmak zorunludur.

    örn:

    //echo : $regsubex(Alience nasilsin?,/(e)/g,$upper(\t)) ,: AliEncE nasilsin? döner. aynı anda hem \1 hemde \2 nin değerini almıştır.



    d) \a tüm karşılaşılan itemleri döner \A onun whitespace olmayan halidir.

    örn:

    //echo : $regsubex(Alience nasilsin?,/(e)/g,$upper(\a)) , : AliE EncE E nasilsin? döner.

    //echo : $regsubex(Alience nasilsin?,/(e)/g,$upper(\A)) , : AliEEncEE nasilsin? döner.







    Regular expression metakarakterlerini dokuz ana başlıkta toplayabiliriz:



    Yer karşılaştırmaları

    Literaller

    Karakter sınıfları

    Tekrarlama

    Alternatifler ve gruplama

    Geriye dönük referans

    Yakalama

    Karşılaştırma

    Belirleyiciler

    Diğer





    Yer Karşılaştırmaları



    Regular expression da expression 'a stringte belirli yerlerde arama yapabilmemizi sağlayan sembollerdir.



    Sembol Açıklama
    ^ Karşılaştırılan stringin başlangıcına bakılacak anlamına gelir. "^A" A ile başlayanlar ile eşleşir, "Alience" nin A sı veya "A hatta sana A+" stringinin ilk A sı ile eşleşir.



    örn:

    //echo : $regex(Alience,^A) ,1 yani bulundu değerini görüntüler.

    //echo : $regex(budA ikinci,^A) ,değeri 0 dır.



    $ Karşılaştırılan stringin sonuna bakılacak anlamına gelir. "a$" a ile bitenler ile eşleşir, "Alience" ile eşleşmez, "Hatta" sonu a ile bitiği için eşleşir.



    örn:

    //echo : $regex(Alience,A$) ,0 (sıfır yani bulunamadı değerini görüntüler)

    //echo : $regex(Alfabenin ilk harfi A,A$) ,1



    \b Kelime sınırı anlamına gelir. "ce\b" expression'u "Alience nasılsın?" ile eşleşir çünkü Alience kelimesi ce ile bitmekte. Eğer expressionumuz "en\b" olsa idi "Alience nasılsın?" de "en" olmasına rağmen eşleşmeyecekti.



    örn:

    //echo : $regex(Alience nasılsın,ce\b) ,1

    //echo : $regex(Alience nasılsın?,en\b) ,0



    \B Kelime sınırı dışında anlamına gelir. \b nin tam tersidir.



    örn:

    //echo : $regex(Alience nasılsın,ce\B) ,0

    //echo : $regex(Alience nasılsın?,en\B) ,1








    Literaller



    Regular expression'da anlamı olan ASCII, octal, hexadecimal, UNICODE veya özel karakterlerdir.



    Sembol Açıklama
    \n Yeni satır karakteri(mIRC de identifieri $lf) ile eşleşir. Normalde irc de yeni satır karakterini bulmanız zordur, hemen hemen mümkün değildir, fakat mIRC de dosya dan okutur iken veya scriptingde herhangi bir yere $lf yazdığınızda işe yarayabilecek bir literaldir. Diğer kullanımı \x0a ve \cJ



    örn:

    //echo : $regex(Alience nasilsin. $lf iyimisin?,\n) ,1

    //echo : $regex(Alience nasilsin. iyimisin?,\n) ,0

    //echo : $regex(Alience nasilsin. $lf iyimisin?,\x0a) ,1



    \r Carriage return karakteri($cr) ile eşleşir. \n deki gibidir, windows ta yeni satır $cr ve $lf den (mIRC de itentifieri $crlf) oluştuğu için yeni satırları taramak için \n veya \r kullanabilirsiniz. Diğer kullanımı \x0d ve \cM



    örn:

    //echo : $regex(Alience nasilsin. $cr iyimisin?,\r) ,1

    //echo : $regex(Alience nasilsin. iyimisin?,\r) ,0

    //echo : $regex(Alience nasilsin. $cr iyimisin?,\cM) ,1

    //echo : $regex(Alience nasilsin. $crlf iyimisin?,\r) ,1

    //echo : $regex(Alience nasilsin. $crlf iyimisin?,\n) ,1

    //echo : $regex(Alience nasilsin. iyimisin?,\r) ,0



    \t Tab karakteri ile eşleşir. Diğer kullanımı \x09 ve cI



    örn:

    //echo : $regex(Alience nasilsin. $chr(9) iyimisin?,\t) ,1 $chr(9) tab karakterine karşılık gelir

    //echo : $regex(Alience nasilsin. $chr(9) iyimisin?,\cI) ,1

    //echo : $regex(Alience nasilsin. iyimisin?,\t) ,0



    \? ? karakteri ile eşleşir. \ karakterinin anlamını diğer kısmında bulabilirsiniz.



    örn:

    //echo : $regex(Alience nasilsin. iyimisin?,\?) ,1

    //echo : $regex(Alience nasilsin. iyimisin?,\?$) ,1 \?$ expression'u \? karakteri varsa ve $ sonuncu karakter ise anlamındadır

    //echo : $regex(Alience nasilsin. iyimisin,\?) ,0



    \* * karakteri ile eşlerşir.



    örn:

    //echo : $regex(*Alience* nasilsin. iyimisin,\*) ,1

    //echo : $regex(Alience nasilsin. iyimisin,\*) ,0



    \+ + karakteri ile eşleşir.



    örn:

    //echo : $regex(Alience nasilsin. + iyimisin,\+) ,1

    //echo : $regex(Alience nasilsin. iyimisin,\+) ,0



    \. . karakteri ile eşleşir.



    örn:

    //echo : $regex(Alience nasilsin. iyimisin,\.) ,1

    //echo : $regex(Alience nasilsin iyimisin,\.) ,0



    \| | karakteri ile eşleşir.



    örn:

    //echo : $regex(Alience nasilsin| iyimisin,\|) ,1

    //echo : $regex(Alience nasilsin iyimisin,\|) ,0



    \{ { karakteri ile eşleşir.



    örn:

    //echo : $regex({Alience} nasilsin. iyimisin,\{) ,1

    //echo : $regex(Alience nasilsin. iyimisin,\{) ,0



    \} } karakteri ile eşleşir.



    örn:

    //echo : $regex({Alience} nasilsin. iyimisin,\}) ,1

    //echo : $regex(Alience nasilsin. iyimisin,\}) ,0



    \\ \ karakteri ile eşleşir.



    örn:

    //echo : $regex(/Alience\ nasilsin. iyimisin,\\) ,1

    //echo : $regex(Alience nasilsin. iyimisin,\\) ,0



    \[ [ karakteri ile eşleşir.



    örn:

    //echo : $regex([Alience] nasilsin. iyimisin,\[) ,1

    //echo : $regex(Alience nasilsin. iyimisin,\[) ,0



    \] ] karakteri ile eşleşir.



    örn:

    //echo : $regex([Alience] nasilsin. iyimisin,\]) ,1

    //echo : $regex(Alience nasilsin. iyimisin,\]) ,0



    \) ) karakteri ile eşleşir.



    örn:

    //set %String (Alience) nasilsin. iyimisin | //set %Expression \) | //echo : $regex(%String,%Expression) ,1

    //set %String Alience nasilsin. iyimisin | //set %Expression \) | //echo : $regex(%String,%Expression) ,0



    \( ( karakteri ile eşleşir.



    örn:

    //set %String (Alience) nasilsin. iyimisin | //set %Expression \( | //echo : $regex(%String,%Expression) ,1

    //set %String Alience nasilsin. iyimisin | //set %Expression \( | //echo : $regex(%String,%Expression) ,0



    \nml 8(octal) tabanına göre ASCII karakterler ile eşleşir.

    .(nokta) nın ASCII değeri 46($asc(.))'dır, 46 sayısı 8 tabanına göre "56"'ya eşittir ($base(46,10,8)).



    örn:

    //echo : $regex(Alience nasilsin. iyimisin,\56) ,1 \56 .(nokta) ya denk gelmektedir.

    //echo : $regex(Alience nasilsin iyimisin,\56) ,0



    \xdd 16(hexadecimal) tabanına göre ASCII karakterleri ile eşleşir.

    .(nokta)'nın ASCII değeri 46 olduğunu biliyoruz. 46 sayısı 16 tabanına göre "2E"'ye eşittir ($base(46,10,16)).



    örn:

    //echo : $regex(Alience nasilsin. iyimisin,\x2E) ,1 \x2E .(nokta) ya denk gelmektedir.

    //echo : $regex(Alience nasilsin iyimisin,\x2E) ,0



    \cx x yerine yazılan kontrol karakterleri ile eşleşir. x yerine M yazar isek control + M tuşunun karakteri ile eşleşir oda "enter" yani $cr.



    örn:

    //echo : $regex(Alience nasilsin. $cr iyimisin,\cM) ,1

    //echo : $regex(Alience nasilsin. iyimisin,\cM) ,0






    Karakter Sınıfları



    Özel sınıflar oluşturulmasına olanak sağlar, bu sınıflar [] köşeli parantezler ile belirtilir, eğer köşeli parantezlerin içine ^ işaretini koyar isek parantezlerin içindeki karakterlerden olmayan anlamına gelir.



    Sembol Açıklama
    [xyz] xyz yerine yazılan herhangi bir karakter ile eşleşir. String olarak "Alience" yazar expression olarak ta "[ezp]" yazar isek "Alience" de z ve p olmamasına rağmen e olduğu için eşleşir. [ezp] yi (e|z|p) şeklinde yazabilirdik.



    örn:

    //echo : $regex(Alience,[ezp]) ,1

    //echo : $regex(Alience,(e|z|p)) ,1

    //echo : $regex(Alixncx,[ezp]) ,0



    [x-z] x ve z dahil aralığında kalan herhangi bir karakter ile eşleşir. String olarak "foo" ve expression olarak "[a-g]" yazar isek f harfi a-g aralığında kaldığı için eşleşir.Tüm küçük harfler için [a-z] büyük harfler [A-Z] türkçe karakterler [xyz] karakter sınıfına göre [ğĞüÜşŞıİçÇöÖ] hepsini tanıması için [a-zA-ZğĞüÜşŞıİçÇöÖ] kullanabilirsiniz.



    örn:

    //echo : $regex(foo,[a-g]) ,1

    //echo : $regex(zoo,[a-g]) ,0



    [^xyz] xyz yerine yazılan herhangi bir karakter string te yok ise eşleşir. String olarak "Alience" yazar ve expression olarak ta "[^x]" yazar isek "Alience"'de x olmadığı için eşleşir, String olarak "Alience" expression olarak "[^A]" yazar ise yine eşleşir sebebi de Alience nin ilk harfi A değilde diğer harflerin A olmamasıdır. Eğer Alience yerine "AAAA" yazmış olsa idik eşleşmiyecekti.



    örn:

    //echo : $regex(Alience,([^A])) ,1

    //echo : $regex(Alience,(^[^A])) ,0 ilk ^ anlamı 1. harf A ya eşit değilse [^A].

    //echo : $regex(AAAAAA,([^A])) ,0



    [^x-z] x ve z dahil arasındaki herhangi bir rakkam veya sayı içermiyorsa eşleşir. String olarak "ALIENCE" yazar expression olarak ta "[^A-Z] yazarsak "ALIENCE" de kücük harf olmadığından eşleşmez. Unutmayın ki İ A-Z arasında değildir türk alfabesine has bir karakter olduğundan "ALİENCE" yazılsa idi "[^A-Z]" expressionunda İ küçük harf algılanıcaktı.



    örn:

    //echo : $regex(ALIENCE,([^A-Z])) ,0

    //echo : $regex(Alience,([^A-Z])) ,1 A dışında diğerleri küçük harf olduğundan eşleşir



    . \n hariç herhangi bir karakter ile eşleşir. Regular expression da tüm karakterler ile eşleşmesi için [.\n] expression'unu kullanmalısınız fakat mIRC de \n yani $cr karakterini içeren multiline(birden çok satır) içeren yazılara hemen hemen denk gelmesiniz dolayısı ile "." tüm karakterler ile eşleşir.



    örn:

    //echo : $regex(Alience,.lience) ,1

    //echo : $regex(Blience,.lience) ,1

    //echo : $regex(XXlience,.lience) ,1 .lience nin anlamı herhangi bir karakter ve lience geliyorsadır.

    //echo : $regex(XXlience,^.lience) ,0 ^.lience string herhangi bir karakter ile başlayıp lience diye devam ediyorsa.



    \w Herhangi bir kelime karakteri ve _ ile eşleşir. Diğer anlamı [a-zA-Z0-9_]



    örn:

    //echo : $regex(Alience,\w) ,1

    //echo : $regex(Herhangi bir cümle,\w) ,1

    //echo : $regex($#,\w) ,0



    \W Herhangi bir kelime karakteri ve _ dışındaki karakterler ile eşleşir, \w nin tam tersidir. Diğer anlamı [^a-zA-Z0-9_]



    örn:

    //echo : $regex(Alience,\W) ,0

    //echo : $regex(Herhangi bir cümle,\W) ,1 \s ile eşleşiyor!



    \d Herhangi bir rakkam ile eşleşir. Diğer bir anlamı [0-9]



    örn:

    //echo : $regex(Alience,\d) ,0

    //echo : $regex(Alience 8,\d) ,1



    \D Rakkam dışında herhangi bir karakter ile eşleşir, \d nin tam tersidir. Diğer anlamı [^0-9]



    örn:

    //echo : $regex(Alience,\D) ,1

    //echo : $regex(0123456789,\D) ,0



    \s Herhangi bir whitespace(kelime anlamı beyaz boşluk asıl anlamı herhangi bir karakter gözükmeyen boşluk) ile eşleşir. Diğer anlamı [\n\r\t ]



    örn:

    //echo : $regex(Alience,\s) ,0

    //echo : $regex(Alience nasılsın?,\s) ,1

    //echo : $regex(Alie $+ $cr $+ nce,\s) ,1



    \S Whitespace olmayan herhangi bir karakter ile eşleşir, \s nin tam tersidir. Diğer anlamı [^\n\r\t ]



    örn:

    //echo : $regex($cr,\S) ,0

    //echo : $regex(Alience,\S) ,1








    Tekrarlama



    Stringte tekrarlanan karakterleri veya daha küçük stringleri aramaya imkan tanırlar.



    Sembol Açıklama
    {n} Öncesinden yazılan karakter yada string n kere tekrar ederse eşleşir. n sıfır vey asıfırdan büyük olan bir rakkam olmalıdır. "foo" stringinde "o{2}" expression'u "oo" ile eşleşir.



    örn:

    //echo : $regex(foo,o{2}) ,1

    //echo : $regex(foo,o{3}) ,0



    {n,m} Öncesinden yazılan karakter ayda string en az n defa en çok m defa tekrarlanıyorsa eşleşir. n ve m sıfır vey asıfırdan büyük olan bir rakkam olmalıdır. "o{2,5}" expression'u "oo" "ooo" "oooo" ve "ooooo" ile eşleşir. "o{2,}" en az "oo" ve en çok sonsuz o ile eşleşir.

    not: bu expressionu () parantezler içinde kullanmanız gerekmektedir (mIRC 6.31 parantezsiz desteklemiyor).



    örn:

    //echo : $regex(foo,o{2}) ,1

    //echo : $regex(fooooo,(o{2,5})) ,1

    //echo : $regex(fo,(o{2,5})) ,0

    //echo : $regex(foo,(o{1,})) ,1 "{1,}" diğer bir anlamı "o+"

    //echo : $regex(fo,(o{0,})) ,1 "{0,}" diğer bir anlamı "o*"



    ? String herhangi bir karakter veya daha küçük stringi içeriyorsa veya hiç içermiyorsa eşleşir. Diğer anlamı "{0,1}". "Ali(ence)?" hem "Ali" hemde "Alience" ile eşleşir.



    örn:

    //echo : $regex(Ali,Ali(ence)?) ,1

    //echo : $regex(Xlience,Ali(ence)?) ,0

    //echo : $regex(Alience,A?ience) ,1

    //echo : $regex(Axience,A?ience) ,1



    * String herhangi bir karakter veya daha küçük stringi içermiyorsa veya tekrar ediyorsa eşleşir. Diğer anlamı "{0,}".



    örn:

    //echo : $regex(Ali,Ali*) ,1

    //echo : $regex(Alience,Ali*) ,1

    //echo : $regex(Aliiiiiiiience,Ali*ence) ,1

    //echo : $regex(Alxiiiiiiiience,Ali*ence) ,0

    //echo : $regex(Alence,Ali*ence) ,1



    + String herhangi bir karakter veya daha küçük stringi içeriyorsa veya tekrar ediyorsa eşleşir. Diğer anlamı "{1,}".



    örn:

    //echo : $regex(Ali,Ali+) ,1

    //echo : $regex(Alience,Ali+) ,1

    //echo : $regex(Alence,Ali+) ,0

    //echo : $regex(Aliiiiiiiiiiiience,Ali+) ,1








    Alternatif ve Guruplama



    Çok parçalı veya daha karışık expressionları oluşturmak için kullanılır.



    Sembol Açıklama
    () Expressionları gruplamak için kullanılır. "(ab)c" expression'u "abc" ile eşleşir.



    örn:

    //echo : $regex(abc,(ab)c) ,1

    //echo : $regex(ab,(ab)c) ,0



    x|y x veya y ile eşleşir. "(A|X)lience" expression'u "Alience" ve "Xlience" eşleşir.



    örn:

    //echo : $regex(Alience,(A|X)lience) ,1

    //echo : $regex(Xlience,(A|X)lience) ,1

    //echo : $regex(Zlience,(A|X)lience) ,0

    //echo : $regex(Alience,(li)|(ze)|(te)) ,1 "Alience" deki "li" (li) ile eşleşir.








    Geriye Dönük Referans



    Expression'da geriye dönük tarama yapabilmenize olanak sağlar.



    Sembol Açıklama
    ()\n Öncesinden gelen parantez içindeki string veya karakter n defa tekrar ediyrosa eşleşir. n pozitif bir sayı olmalıdır. "(A)\1" expressionu "AA" ile eşleşir, "(.)\1" expressionu "AA" , "bb" veya herhangi iki defa tekrar eden karakter veya string ile eşleşir. Eğer \0 yazılır ise kaç tane eşleşme olduğunu gösterir. "\t" herhangi bir text ile eşleşir



    örn:

    //echo : $regex(AAlience,(A)\1lience) ,1

    //echo : $regex(AlienceAlience,(Alience)\1) ,1

    //echo : $regex(Alience,(.)\1) ,0

    //echo : $regex(foo,(.)\1) ,1 buradaki "(.)\1" "oo" ile eşleşir.











    Yakalama



    Sembol Açıklama
    (string) String eşleşiyorsa geriye dönük referans olarak yakalanır. "(A)\1li(e)\2nce" expressionu "AAlieence" ile eşleşir burada expressiondaki birinci parantezler "\1 "'e ikinci parantezler "\2"'ye geriyedönük referans olarak kayıt edilir.



    örn:

    //echo : $regex(AAlieence,(A)\1li(e)\2nce) ,1



    (?:string) String eşleşiyorsa geriye dönük referans olarak kaydedilmez. "(?:A)\1lience" expressionu "AAlience" ile eşleşmez çünkü "\1"'in herhangi bir değeri yoktur. | ilede kullanabiliriz "(?:A|X)lience"



    örn:

    //echo : $regex(AAlience,(?:A)\1lince) ,0

    //echo : $regex(Alience,(?:A)lience) ,1

    //echo : $regex(Alience,(?:A|X)lience) ,1

    //echo : $regex(Xlience,(?:A|X)lience) ,1











    Karşılaştırma



    Expressionun aranma tarzını belirlememizi sağlar. "exp" expression'un kısaltılmışıdır.



    Sembol Açıklama
    /exp/i Karşılaştırmada büyük harf küçük harf ayrımını ortadan kaldırır. Türkçe karakterlerde çalışmaz, yani Ğ ile /ğ/i eşleşmez.



    örn:

    //echo : $regex(Alience,a) ,0

    //echo : $regex(Alience,/a/i) ,1 küçük a büyük A ile eşleşir.



    /exp/m Multiline (birden fazla satır, $crlf içeren string) arama yapmamıza olanak sağlar. "Alience $crlf $+ nasılsın" "nasılsın" ile normalde eşleşir ama "^nasılsın" ile eşleşmez çünkü stringimiz ancak "nasılsın" ile başlarsa eşleşir. Eğer multiline karşılaştırmasını ekler isek $crlf yani her yeni satırın başlangıcını da sring başlangıcı gibi kabul edip tarar dolayısı ile "/^nasılsın/i" eşleşir.



    örn:

    //echo : $regex(Alience $crlf $+ nasilsin,nasilsin) ,1

    //echo : $regex(Alience $crlf $+ nasilsin,^nasilsin) ,0

    //echo : $regex(Alience $crlf $+ nasilsin,/^nasilsin/m) ,1



    /exp/s (".") Nokta karakter sınıfının yeni satır ("\n" veya $crlf) haricinde her karakter ile eşleştiğini belirtmiştik "//s" karşılaştırması ile "." \n ile de eşleşir.



    örn:

    //echo : $regex(Alience $crlf $+ nasilsin,.nasilsin) ,0 "." $crlf ile eşleşmiyor.

    //echo : $regex(Alience $crlf $+ nasilsin,/.nasilsin/s) ,1



    /exp/x Expressiondaki whitespace karakterleri gözardı edilip karşılaştırılmasını sağlar.



    örn:

    //echo : $regex(Aliencenasilsin,Alience nasilsin) ,0

    //echo : $regex(Aliencenasilsin,/Alience nasilsin/x) ,1 "Alience" ile "nasılsın" arasındaki boşluk gözardı edildi.



    /exp/A Expressionun başına ^ konmuş gibi karşılaştırılmasını sağlar.



    örn:

    //echo : $regex(Alience nasilsin,/Alience/A) ,1

    //echo : $regex(Selam Alience nasilsin,/Alience/A) ,0



    /exp/g Stringin tamamında expressionun aranmasını sağlar. Normalinde expression bulunursa eşleşme sağlandı diye çıkılır //g karşılaştırmasında string bitene kadar taranır.



    örn:

    //echo : $regex(Selam Alience Alience nasilsin,Alience) ,1

    //echo : $regex(Selam Alience Alience nasilsin,/Alience/g) ,2 iki adet "Alience" var











    Belirleyiciler



    Sembol Açıklama
    (?<=exp) Positif belirleyicidir, exp uyuyorsa eşleşir. Belirleyicilerin özeliği geriye dönük referans olarak kaydedilmemeleridir, yakalama kısmındaki "(?:)" gibi. "mIRC.*(?<=6.31|6.30|6.21)" expressionu mIRC den sonra 6.31, 6.30 veya 6.21 geliyorsa eşleşir fakat 5.71 ile eşleşmez.



    örn:

    //echo : $regex(mIRC 6.21,mIRC.*(?<=6\.31|6\.30|6\.21)) ,1

    //echo : $regex(mIRC 6.31,mIRC.*(?<=6\.31|6\.30|6\.21)) ,1

    //echo : $regex(mIRC 6.30,mIRC.*(?<=6\.31|6\.30|6\.21)) ,1

    //echo : $regex(mIRC 5.71,mIRC.*(?<=6\.31|6\.30|6\.21)) ,0

    //echo : $regex(mIRC 6.21,mIRC (6.31|6.30|6.21)) ,1



    a) her harfi büyük harfle yazmak için:

    //echo : $regsubex(selam alience nasilsin,/(?<=^| )(.)/g,$upper(\1)) , burada ^ cümlenin başı "| )" veya boşluktan sonra "." \n den farklı herhangi bir karakter var ise $upper(\1) büyük harf olarak göster.



    b) aynı expressionun diğer bir yazılımı:

    //echo : $regsubex(selam alience nasilsin,/(^.| .)/g,$upper(\1))



    a örneğinde (?<=^| ) geriey dönük referans olarak kaydedilmediğinden (.) \1 e kaydedildi.

    b örneğini: //echo : $regsubex(selam alience nasilsin,/(^| )(.)/g,$upper(\1)) şeklinde yazzsa idik (^| ) \1 e kaydedilecekti ve sonuç ": elam lience asilsin" olacaktı fakat //echo : $regsubex(selam alience nasilsin,/(^| )(.)/g,\1 $upper(\2)) şeklinde yazsak yine düzgün çalışacaktı. Bu arada ilk b örneğide düzgün çalışıyor.



    (?<!exp) Negatif belirleyicidir "?<=" tam tersi olarak içermiyorsa eşleşir. Yine "?<=" gibi geriye dönük referansa kaydedilme.



    örn:

    //echo : $regex(999abc,(?<=\d{3})(?<!999)) ,0 abc ile önündeki 3 rakkam 999 olduğu için eşleşmez.

    //echo : $regex(12bc,(?<=\d{3})(?<!999)) ,1



    Noktadan sonraki harf ile nokta arasında boşluk yoksa boşluk koymak için:

    //echo : $regsubex(bu bir cümle denemesidir.ikinci cümle.ücüncü cümle,/(\.(?<!\s))/g,$+(.,$chr(32)))

    sonuç: : bu bir cümle denemesidir. ikinci cümle. ücüncü cümle








    Diğer



    Sembol Açıklama
    \ Eğer arkasından rakkam geliyorsa geriye dönük referans veya literaller'de ki oktal eşleşmeye denk gelir.Eğer arkasından literallerde belirtilen karakterler denk geliyorsa belirtilen karakter ile veya "\n" de olduğu gibi belirtilen özel karakterler ile eşleşir.








    Yukarıdakilerden hariç iki örnek:



    Regular Expression ile literallerine otomatik \ koymak için:

    $regsubex(String,/([\?\*\+\.\|\{\}\\\[\]\(\)])/g,\\1)



    Regular Expression ile tekrar eden karakterleri silmek için:

    $regsubex(String,/(.)\1+/g,\1)
    Konu TurkServ tarafından (06-27-19 Saat 12:05 ) değiştirilmiştir. Sebep: duzenleme

+ Yeni Konu aç

Konu Bilgileri

Users Browsing this Thread

Şu an 1 kullanıcı var. (0 üye ve 1 konuk)

Bu Konudaki Etiketler

Yetkileriniz

  • Konu Acma Yetkiniz Yok
  • Cevap Yazma Yetkiniz Yok
  • Eklenti Yükleme Yetkiniz Yok
  • Mesajınızı Değiştirme Yetkiniz Yok
  •  
Uyarı
Sitemiz bir " paylaşım " sitesidir. Bu yüzden sitemize kayıt olan herkes kontrol edilmeksizin mesaj/konu/resim paylaşabilmektedir. Bu sebepten ötürü, sitemiz üzerinden paylaşılan mesajlar, konular ve resimlerden doğabilecek olan yasal sorumluluklar paylaşan kullanıcıya aittir. ForumIrc.Net hiçbir yasal sorumluluk kabul etmemektedir. Illegal herhangi bir faaliyet görülmesi durumunda iletişim sayfası üzerinden ulaşıldığı taktirde mesaj, konu ya da resim en fazla 24 saat içerisinde silinecektir.
sohbet muhabbet
SOSYAL MEDYA