Düzenli İfadeler, Giriş
|
#3474 |
|
|
Kaan
User is:
Posts: 2772
Meslek: Serbest Meslek
Age: 43
|
D?zenli ?fadeler, Giri?
Giri?, D?zenli ?fadeler Yeniden merhaba. Bu yaz?m?z?n konusu d?zenli ifadeler. Di?er ad?yla Regular Expressions. Peki nedir bu d?zenli ifadeler ve ne i?e yararlar? ?zetle onun i?in bir ifade ?zerinde i?lem yapmaya yarayan bir t?r s?z dizimi diyebiliriz. Ve bu i?lemler aras?nda (kulland???n?z fonksiyona ba?l? olarak) arama, de?i?tirme ve par?alamay? sayabiliriz. Ama hemen belirtelim asl?nda bu bahsetti?imiz s?z diziminin de (en az?ndan PHP i?in) birden fazla standard? ve o standarda uygun fonksiyon grubu vard?r. Biz ise yaz?m?zda bu standartlar aras?nda (bence) en g??l? olan?n? yani PCRE (Perl-Compatible Regular Expressions/Perl-Uyumlu D?zenli ?fadeler) 'i ele alaca??z. Ve bu nedenle PHP'nin perl uyumlu d?zenli ifade fonksiyonlar?n? kullanaca??z. Daha sonra bunlara uzun uzun de?inecek olsak da ?imdilik k?sa bir ?zet yapal?m. preg_match_all: ?fadedeki t?m uyumlu b?l?mleri verir. (evrensel arama) preg_match: ?fadedeki uyumlu b?l?m? verir. (arama) preg_replace: ?fadedeki uyumlu b?l?mleri verilenlerle de?i?tirir. (de?i?tirme) preg_replace_callback: ?fadedeki uyumlu b?l?mleri de?i?tirmek ?zere verir. (arama ve de?i?tirme) preg_split: ?fadeyi par?alar. preg_grep: Dizi i?indeki desene uyumlu indeksleri ?evirir. preg_quote: ?fadedeki d?zenli ifade anahtarlar?n? etkisizle?tirir. Asl?nda yapmak istedi?im size yapabilecekleriniz ?zerine ufak bir ipucu verebilmek. Ki g?rd???n?z gibi d?zenli ifadeler ve ona ba?l? fonksiyonlar, ifadeler ?zerinde denetim sa?lamak i?indir. Bunun i?inde size verilen ifadeyi filtrelemekten tutunda, yeni bir s?zdizimi geli?tirmeye kadar her ?eyi sayabilirsiniz. ?imdi ba?lamadan ?nce baz? ta?lar? yerine oturtmak ad?na basit bir ?rnek verelim. Kod: <? if(!preg_match("'^\w+@\w+\.\w[\w\.]+$'",$email)) echo "Hatal? mail adresi !"; ?> Yukar?daki k?sa kod tahmin edebilece?iniz gibi $email i?eri?indeki ifadenin ger?ek bir mail adresi olup olmad???n? kontrol eder. Bunun i?in bir d?zenli ifade fonksiyonu olan preg_match'? kullan?r ve bu fonksiyon ?? parametre al?r. ?lki d?zenli ifade deseni. ?rne?imizde bu '^\w+@\w+\.\w+$' ifadesi. ?kincisi aranan ifade. Yine ?rne?imizde bu $email de?i?keninin i?eri?i. Son olarak bizim ?rne?imizde yer vermedi?imiz (ama daha sonra de?inece?imiz) sonu? dizisi. Bunlar? a??klad?ktan sonra art?k fonksiyonun kendisine parametre olarak verilen d?zenli ifade desenini, ifadeye uygulayarak e?er uyum sa?lan?rsa (yani arad???n? bulduysa) do?ru (true), sa?lanmaz ise yanl?? (false) d?nd?rd???n? s?yleyebiliriz. ?zetle bizim bu yaz?da ?zerinde duraca??m?z ?eyde ?rnekteki '^\w+@\w+\.\w[\w\.]+$' t?r?nden ifadeleri nas?l yazabilece?iniz. D?zenli ?fade Desenleri Hemen ?rne?imize geri d?nelim. '^\w+@\w+\.\w[\w\.]+$' ?fadenin (?uan i?in) anla??lmaz oldu?unun fark?nday?m. Ama ilerleyen b?l?mlerde asl?nda ?ok basit bir s?z dizimi oldu?unu g?receksiniz. S?z dizimi yani birden fazla ifadenin belirli bir d?zende bir araya getirilmesi. ??te biz buna d?zenli ifadelerde desen diyece?iz. Yani yukarda g?rd???m?z ?ey asl?nda bir d?zenli ifade deseni. ?imdi bu desene tekrar bakt???m?zda baz? noktalama i?aretleri ve harflerden olu?tu?unu g?rebiliriz. ??te bu karakterler aras?nda ?zel bir anlam? yada g?revi olanlara da desen atomu yada daha anla??l?r bir dille anahtar diyebiliriz. ?imdi her ?ey tamamsa san?r?m art?k bu anahtarlar?n neler oldu?una ve hangi g?revleri ?stlendiklerine ge?ebiliriz. Ama ondan ?nce desenin sa??ndaki ve solundaki ' t?rnaklar?n birer desen s?n?rlay?c?s? oldu?unu ve bu konuya daha sonra ayr?nt?lar?yla de?inece?imizi belirtmem gerekiyor. Yani ?imdilik bilmemiz gereken bizim desenden kast?m?z?n asl?nda t?rnaklar?n aras?nda kalan ^\w+@\w+\.\w[\w\.]+$ b?l?m?n?n oldu?u. ?zetle bu s?n?rlay?c?lar?n desenin etraf?na yerle?tirilmesinin bir t?r zorunluluk oldu?unu s?ylemeliyim. Ama biz verdi?imiz ?rneklerde bu s?n?rlay?c?lara ?imdilik yer vermeyece?iz. Yinede siz ?rnekleri test ederken deseni s?n?rlay?c?lar i?ine almay? unutmay?n. ?imdi kald???m?z yerden yani anahtarlardan devam edebiliriz. Desen Atomlar? (Anahtarlar) ?sterseniz i?e anahtarlar? k?saca tan?mlayarak ba?layal?m.. Daha sonrada bu anahtarlar?n her birini ayr? ayr? ele al?r?z. ?lk olarak genel anahtarlara g?z atal?m: \ Genel ka??? karakteri (buna daha sonra de?inece?iz) ^ ?fadenin (yada sat?r?n) ba?lang?c? $ ?fadenin (yada sat?r?n) sonu . Herhangi bir karakter [ Karakter s?n?f? ba?lang?c? ] Karakter s?n?f? sonu | Alternatif b?l?m?n ba?lang?c? (yada k?saca "or" deyimi) ( Alt desen (subpattern) ba?lang?c? ) Alt desen (subpattern) sonu ? 0 yada 1 miktar (yan? ya hi? olmayan yada varsa sadece "bir" tane olan) * 0 yada daha fazla miktar + 1 yada daha fazla miktar { Maksimum/Minimum miktar ba?lang?c? } Maksimum/Minimum miktar sonu Sadece karakter s?n?flar? (buna daha sonra de?inece?iz) i?inde kullanabilece?iniz anahtarlar ise ??yle: ^ S?n?f? olumsuzla?t?ran tan?mlay?c?. (?rne?in a d???nda her ?ey i?in [^a] gibi) - Ba?lang??/biti? aral??? (?rne?in 0'dan 9'a kadar demek i?in [0-9] gibi) Bunlar?n d???nda birde, birden ?ok g?revi olan ?zel bir anahtar daha, \ ters b?l? (backslash) anahtar? var ki biz onun her g?revini teker teker ele alaca??z. Genel ka??? karakteri olarak \ ters b?l? anahtar? Bu kullan?m yukar?da listesini verdi?imiz anahtarlar? sadece bir karakter olarak betimleyebilmek i?indir. ?rne?in biz metin i?inde . nokta karakterini ar?yor olal?m. Oysa listede de g?rebilece?imiz gibi bu karakterin d?zenli ifadeler i?inde ?zel bir anlam? var. Yani o bir desen anahtar?. ?yleyse istedi?imizi elde edebilmek i?in karakterin ba??na, genel ka??? anahtar? olarak \ ters b?l?y? eklememiz gerekiyor. ?rne?in, \. deseni gibi. Ama arad???m?z zaten bu genel ka??? anahtar?n?n kendisi ise bu kez onunda ba??na bir genel ka??? anahtar? yerle?tirmemiz laz?m. \\ Not: \ karakteri bildi?iniz gibi PHP i?inde ka???? temsil eder. Yani yukar?daki deseni test ederken deseni "'\\'" ?eklinde de?il "'\\\'" ?eklinde yazmal?s?n?z. Aksi halde sa?daki s?n?rlay?c? yani ' tek t?rnak etkisizle?ecek ve hata alacaks?n?z. G?r?nmez (non-printing) karakterleri yakalamak Bunu da ??yle izah edebiliriz. ?rne?in bir metin yazarken sat?r sonuna geldi?inizde enter tu?una bast?n?z ve alt sat?ra ge?tiniz. Oysa g?r?n?rde o noktaya bas?lm?? herhangi bir karakter yoktur. Asl?nda tam tersine sizin metin edit?r?n?z o noktaya sizin g?remeyece?iniz bir karakteri yani yeni sat?r (newline) karakterini basm??t?r. ??te a?a??da listesini verdi?imiz buna benzer g?r?nmez karakterleri yakalamak i?in yine \ ters b?l? anahtar?n? kullanmal?s?n?z. \n Herhangi bir yeni sat?r karakteri \r Herhangi bir sat?r ba?? (carriage return) karakteri \t Herhangi bir girinti (tab) karakteri \f Herhangi bir ka??t ??kt?s? (formfeed) karakteri \cx Herhangi bir CTRL-X karakteri (CTRL+C yada CTRL+V gibi) \xFF Herhangi bir onalt?l?k (hexedecimal) kod. (? demek i?in \xA9 gibi) Karakter setleri Liste yine a?a??da. Ki listeden de anlayabilece?iniz gibi \ ters b?l? anahtar? ile kullanaca??n?z bu karakterler, baz? karakter setlerini (rakam,harf yada beyaz bo?luk gibi) betimlemek i?in kullan?l?r. \d Herhangi bir ondal?k say? karakteri (0,1,2,3 vb. gibi) \D Ondal?k say? karakteri d???nda herhangi bir karakter \s Herhangi bir beyaz bo?luk (whitespace) karakteri (\r,\n,\t,\f vb. gibi) \S Beyaz bo?luk d???nda herhangi bir karakter \w Herhangi bir yaz? karakteri. (a'dan z'ye ve 0'dan 9'a t?m harf, rakam ve _ karakteri) \W Yaz? karakteri d???nda herhangi bir karakter. S?n?rlar? yakalamak \ ters b?l? anahtar?n?n son kullan?m ?ekliyse bir ifade yada kelimenin s?n?rlar?n? belirlemek i?in olan?d?r. Ama bu kullan?m?n di?erlerinden belirgin bir farkl?l??? vard?r. Oda a?a??da listesi verilen karakterlerin asl?nda fiziksel bir kar??l?klar?n?n olmay???. \b Kelime s?n?r? (karakteri) \B Kelime s?n?r? hari? herhangi bir karakter \A ?fadenin ba?? (karakteri) \Z ?fadenin yada sat?r?n sonu (karakteri) \z ?fadenin sonu (karakteri) Bunu ??yle anlayabiliriz. ?rne?in bir iki ?? ifadesindeki her kelimenin s?n?rlar? bellidir. Oysa ifadede bu s?n?rlar? belirleyen ?zel bir karakter mevcut de?ildir. Bizse sadece kelime aralar?ndaki bo?luk, sat?r sonu, nokta gibi karakterlere bakarak kelimenin nerde bitti?ini belirleriz. Benzer ?ekilde yazd???n?z desenler i?inde kullanaca??n?z \b anahtar? da s?n?r? bu ?ekilde belirler. Ama ifadede \b anahtar?n?n ger?ek, fiziksel bir kar??l??? yoktur. ??nk? ?rne?in bir kelimesi ve ard?ndan gelen bo?luk karakterinin aras?nda ger?ekte bir karakter olmas? zaten m?mk?n de?ildir. Birde ?imdilik yer vermedi?imiz bir kullan?m daha var (backreferance). Ama onu da daha sonra a??klamak ?zere bir kenara b?rakarak art?k bu denli ?ok anahtar?n nerde ve nas?l kullan?laca??na bakal?m. D?zenli ?fade Desenleri (S?z Dizimi) Karakterler Yani ifadedeki bir yada birden fazla karakteri yakalamak i?in yazaca??m?z desenler. ?rne?in, ali deseni ali, mehmetali, alikemal ifadelerinin t?m?n? yakalar. Ama arad???m?z karakter e?er yukarda listesini verdi?imiz anahtarlardan biriyse bu kez karakterin ba??na genel ka??? anahtar? olarak \ ters b?l?y? yerle?tirmeliyiz. \d\. gibi. Bu desen 1 ile 9 aras?ndaki t?m .incileri yakalamak i?indir. ?rne?in 1., 2., 3. gibi (??nk? ba?ta belirtti?imiz gibi \d ?zel bir anahtar (yada karakter setidir) ve 0 ile 9 aras?ndaki t?m rakamlar? kapsar). Benzer ?ekilde arad???m?z karakter ka??? karakterinin kendisiyse bu kez onunda ba??na bir ka??? yerle?tirmeliyiz. \w:\\ Yine yukar?daki desen A'dan Z'ye t?m s?r?c? isimlerini yakalamak i?indir. ?rne?in A:\, C:\, D:\ gibi (Burada da yine a'dan z'ye harfleri bar?nd?ran \w karakter setini kulland?k). Son olarak . nokta anahtar?n? yazd???n?z desende herhangi bir karakteri betimlemek i?in kullanabilirsiniz. Yani, <.> deseni <1> ifadesini yakalayabildi?i gibi <a> ifadesini de yakalar. (Sadece harf ve rakamlar? de?il, . nokta anahtar? yeni sat?r (\n) ve sat?r ba?? (\r) hari? herhangi bir karakteri betimleyebilir.) Karakter S?n?flar? Ama baz? durumlarda bu yeterli olmayabilir. ?rne?in tarih yada zaman yaz?l?mlar?nda, \d\d deseni 00'dan 99'a kadar t?m iki haneli say?lar? yakalayaca??ndan maksimum 59 olabilen dakika ve saniyeleri yakalamak i?in kullan?lamaz. Bunun yerine, [012345]\d ?eklinde bir desen yazman?z laz?m. B?ylece ilk hane mutlaka [ ve ] anahtarlar? aras?nda kalan karakterlerden biri olmaya zorlanacak ve istedi?imiz olacakt?r. Ayn? deseni bir ba?ka ?ekilde yani [0-5]\d ?eklinde de yazabiliriz. Buda aral?k belirlemeye iyi bir ?rnek san?r?m. Son olarak ^ kesme anahtar?n? yani karakter s?n?f?n? olumsuzla?t?ran anahtar? ele al?rsak [^??i???] Deseni t?rk?eye ?zg? harfler d???nda herhangi bir karakteri bulmak i?in kullan?labilir. S?n?rlar? betimlemek Bunu anlatabilmek i?in de ilk verdi?imiz ?rne?e geri d?nelim. ali Demi?tik ki bu desen ali, mehmetali, alikemal ifadelerinin t?m?n? yakalar. Ama biz bunu istemiyor olabiliriz. ?rne?in istedi?imiz sadece ba??nda ali ge?en ifadeleri yakalamak ise ^ali demeliyiz. Bu durumda mehmetali ifadesi elenecektir. Yada biz sonunda ali ge?en ifadeleri ar?yorsak e?er ali$ desenini yazmam?z gerekir. B?ylece alikemal ifadesinin yakalanmas?n? engelleriz. Son olarak biz sadece ali ifadesini ar?yorsak ^ali$ demeliyiz. B?ylece hem mehmetali hemde alikemal elenir ve biz sadece ali ifadesini yakalar?z. G?rd???n?z gibi ^ kesme ve $ dolar anahtarlar?, t?m desenin ifadenin hangi k?sm?na uygulanaca??n? belirler. Bunun d???nda benzer bir g?revi olan bir anahtar daha vard?r. \bali\b Bu deseni bir ?nceki ^ali$ deseni ile kar??la?t?r?rsak, ^ali$ deseni mehmet ali ifadesini de yakalayamaz. ??nk? ifadede ali sonda olsa da ba?ta mehmet vard?r. Oysa \bali\b ayn? ifadedeki ali 'yi yakalar. ??nk? \b anahtar? kelime s?n?r?n? belirten ?zel bir anahtard?r. (Buna daha ?ncede de?indik). Ba?ka bir ?rnekle durumu ayd?nlatmaya ?al???rsak, .\b deseni ali ifadesindeki i 'yi bulur. ??nk? desene g?re bizim istedi?imiz kelimenin sonundaki herhangi bir (sadece bir adet) karakterdir. Devam edersek, bu ?zel anahtar?n z?tt?n? yani \B anahtar?n? ??yle ?rneklendirebiliriz. .\B Bu desende en az iki karakterli kelimelerin ilk karakterini verir. ?rne?in a li ifadesindeki l 'yi. (??nk? ilk kelime yani a tek karakterli oldu?u i?in desen onun ard?ndan gelen li 'ye y?nelir) Not: Asl?nda hepsi bu kadar de?il. Daha hen?z de?inmedi?imiz \A, \Z, \z ?zel anahtarlar? da vard?r. Ama bunlar daha sonra de?inece?imiz desen d?zenleyiciler ile ili?kili oldu?undan ?imdilik es ge?mek zorunday?z. Alternatif yollar Baz? ifadelerin ?e?itli yaz?l??lar? oldu?unu biliriz. Onlar? yakalamak i?inse alternatif yollar belirlememiz gerekir. ??te desen yazarken alternatif yollar belirlemenizi sa?layan ?zel karakter | boru (pipe) karakterdir. erkek|kad?n Bu desen hem erkek hem de kad?n ifadelerini yakalar. Ama tahmin edersiniz ki erkek kad?n ifadesini yakalamayacakt?r. Not: ?imdilik k?saca de?iniyoruz ama ilerleyen b?l?mlerde bu konuya s?k?a geri d?n?ce?iz. Miktar? belirlemek Bu belki de en ?nemli konulardan biri. ??nk? bu sayede yazd???n?z desenlerde y?ksek bir denetim sa?layabilirsiniz. O y?zden hemen bunun i?in kullanabilece?iniz ?n tan?ml? ?? anahtar ve miktar s?n?rlar?n? belirleyebilece?iniz ?zel bir kullan?m oldu?unu s?yleyip bunlar? a??klamaya giri?elim. ? soru i?areti S?f?r yada bir tane anlam?na gelir. Yani arad???m?z desen hi? olmayabilir. Ama olursa da ondan en fazla bir tane istiyoruz demektir. ?rne?in, \d? deseni, en az bir haneli t?m say?lar?n en soldaki hanesini verir. Yani say? 0 ise 0'? 99 ise 9'u. Art? + En az bir yada birden fazla anlam?na gelir. Yani arad???n?z desenden en az?ndan bir tane olmal?. Ama birden fazlada olabilir. ?rne?in, \d+ deseni, yukar?dakinden farkl? olarak ?st limit olmaks?z?n en az bir haneli t?m say?lar? yakalamak i?indir. Bunun anlam? bu desenle s?f?rdan sonsuza t?m say?lar? yakalayabilirsiniz. Y?ld?z * S?f?r yada birden fazla anlam?na gelir. Yani arad???n?z ifade hi? olmayabilir. Ama birden fazlada bulunabilir. ?rne?in, \d* deseni, yine ?st limit olmaks?z?n t?m say?lar? yakalayacakt?r. Yani say? hi? olmayabilir ama olursa da ka? haneli oldu?u ?nemli de?il. S?sl? parantezler {x,y} Ama bu yetmeyebilir. Baz? durumlarda alt ve ?st limitleri de siz belirlemek isteyebilirsiniz. Bu durumda s?sl? parantezleri kullanman?z gerekir. \w{2,4} ?rne?in yukar?daki desen en az iki en ?ok d?rt yaz? karakterini yakalayacakt?r. Ba?ka bir ?ekilde ifade edersek s?sl? parantezler i?inde virg?lden ?nce yazd???n?z ilk rakam miktar?n alt s?n?r?n?, virg?lden sonra yazd???n?z ikinci rakam ise miktar?n ?st s?n?r?n? betimler. E?er ?st s?n?r belirtmek istemiyorsan?z yazmak zorunda de?ilsiniz. ?rne?in, \w{2,} gibi. Bu kez ?st limit olmaks?z?n en az iki yaz? karakterini yakalayabilirsiniz. Ama istedi?iniz ifadeden sadece belirtti?iniz miktarda elde etmekse ?st s?n?r? tamamen kald?rman?z gerekmekte. \w{2} Asl?nda aradaki fark? daha iyi anlamak i?in ?u tabloya da g?z atabilirsiniz. Kod: ?fade | Desen | Kar??l?k -------+---------+---------- a | \w{2,4} | - abcdef | \w{2,4} | abcd a | \w{2,} | - abcdef | \w{2,} | abcdef a | \w{2} | - abcdef | \w{2} | ab Not: Tabloda - ifadenin desenle uyumsuz oldu?unu g?sterir. Yani desen ifadenin hi? bir b?l?m?n? yakalamam??t?r. A?g?zl? ve tembel desenler Komik geldi?ini biliyorum. Ama bu konu i?in daha iyi bir ba?l?kta d???nemiyorum. Hemen ne anlatmak istedi?imize ge?ersek. ?rne?in biz <a> <.> gibi bir ifadede <> i?inde kalan olas? t?m karakterleri yakalamak istiyorsak <.+> gibi bir desen yazabiliriz. Ama desenimiz bu durumda a? g?zl? davranarak bize en soldaki < ve en sa?daki > karakterleri aras?ndaki t?m karakterleri verecektir. ??te biz bu durumun ?n?ne ge?mek i?in desenimizi tembelle?tirmeliyiz. <.+?> G?rd???n?z gibi bunun i?in tek yapmam?z gereken miktar anahtar?n?n sonuna bir ? anahtar? daha eklemek. B?ylece desen sa??ndaki ilk > karakterini g?rd??? an duracak ve bize istedi?imizi verecektir. Asl?nda t?m di?er miktar anahtarlar? i?inde ayn? ?ey ge?erlidir. Tembel soru i?areti ?? Di?eriyle aras?ndaki fark? anlamak i?in 123 ifadesini ele alal?m. \d?\d deseni bu ifadenin 12 b?l?m?n? alacakt?r. Ama \d??\d deseni ifadenin yaln?zca en soldaki hanesini al?r. Yani 1'i. ??nk? ?? a? g?zl? davranmay?p ilk \d anahtar?na kar??l?k gelen karakteri buldu?u an duracakt?r. Tembel art? +? Yine aradaki fark? anlamak i?in ilk verdi?imiz <a> <.> ?rne?ini ele alabiliriz. Tekrar etmek gerekirse <.+?> deseni bu ifadede sa?daki ilk > karakterini g?rd??? an duracakt?r. Daha do?rusu desenle uyumlu ilk kar??l?k olan <a> ifadesini buldu?u an daha fazla devam etmeyecek ve buldu?u kar??l??? geri ?evirecektir. Tembel y?ld?z *? Ayn? ?rnekten devam edersek <.+?> deseni ile <.*?> deseni aras?ndaki fark <.*?> deseninin ifadede <> b?l?m? aras?nda hi? bir ?ey olmasa dahi b?l?m? yakalamas?d?r. Oysa ifadeyi <> <.> ?eklinde de?i?tirdi?imizde <.+?> deseni ifadenin <> <.> b?l?m?n? yakalayacakt?r. ??nk? daha ?ncede s?yledi?imiz gibi + anahtar? kendisinden ?nce gelen ifadeden en az bir tane bulmaya ?artlanm??t?r. Tembel s?sl? parantezler {x,y}? Son olarak pratikte nas?l bir yarar? oldu?unu kestiremesem de miktar s?n?rlar?n?z? tembelle?tirmenizde m?mk?n. Aradaki farkl? g?rebilmek i?in yine a?a??daki tabloya g?z atabilirsiniz. Kod: ?fade | Desen | Kar??l?k -------+----------+---------- abcdef | \w{2,4} | abcd abcdef | \w{2,4}? | ab abcdef | \w{2,} | abcdef abcdef | \w{2,}? | ab abcdef | \w{2} | ab abcdef | \w{2}? | ab ?zetle miktar s?n?rlar?n?z? tembelle?tirmek demek miktar?n ?st s?n?r?n? g?z ard? etmeye benziyor. Yani ne olursa olsun alt s?n?r olarak belirledi?iniz miktarda tekrar elde edebiliyorsunuz. Son olarak s?ylemek istedi?im d?zenli ifadele desenlerinizin, daha do?rusu miktar anahtarlar?n?n ?n tan?ml? olarak tembel olmad???d?r. Ama bu daha sonra de?inece?imiz desen d?zenleyicileri ile de?i?tirilebilir. Bu durumda akl?n?zda tutman?z gereken asl?nda miktar anahtarlar?n?n ard?ndan gelen ? anahtar?n?n o anki durumu tersine ?evirdi?idir. Yani a?g?zl? ise tembel, tembel ise a?g?zl? gibi. Bu konuya da daha sonra geri d?nece?iz. Bu b?l?m?n sonunda... Art?k ilk verdi?imiz ?rne?i daha iyi anlayabiliyoruz ?yle de?il mi?. Ona geri d?nersek, Kod: ^\w+@\w+\.\w[\w\.]+$ asl?nda bu desenin tam olarak, en az bir yaz? karakteri ard?ndan @ karakteri, onun ard?ndan yine en az bir yaz? karakteri nokta ve yine en az bir yaz? karakteri ve/veya nokta arad???n? g?rebiliriz. Yani arad??? eksiksiz bir mail adresidir. ??te buda asl?nda ziyaret?ilerimizin bize hatal? posta adresi vermelerini engelleyecek basit bir filtreden ba?ka bir ?ey de?ildir. Son olarak umar?m bu b?l?mde size d?zenli ifadeler ile ilgili temel bilgileri aktarabilmi?imdir. Kaynak: http://www.ceviz.net/ |
Emlak, Oto Galeri, Rent A Car, ?iir, Edebiyat Script Sipari?lerinizi Verebilirsiniz. Detaylar ??in: kaan@ntka.org Seditio 170 ?ndir Capte M?zik ?ndir Seditio Toolbar ?ndir |













