Bireysel Mesaj Gösterim Modu

Görüntülenme: 30799
Regex ile Kelime Dışlama
2011/08/02 18:06
Bildir! Alıntı ile cevap yaz Oyla! (0 oy)

Bugünlerde, RegEx ile ardışık harf grubunu (veya kelime) dışlama gereksinimim doğdu. 
Bir linkin adresini elde etmek istediğimi ve onu bir başka ara sayfaya yönlendirmek istediğimi varsayalım.

<a href="http://www.mbirgin.com">mbirgin</a>

Yukarıdaki örnekte adresi elde etmek için aşağıdaki deseni uygulayabiliriz:

href="(.*?)"

Ancak aynı zamanda href="javascript:Test()" veya href="#" gibi değerleri barındıran linklere dokunmak istemiyordum.

Bu durumda RegEx ile bazı dışlamalar yapmayı denedim

<a href="([^jav\#].*?)">

Bu, karakter bazında dışlama yapıyordu ve ihtiyacımı karşılamıyordu. j, a, v, # karakterleri ile başlayan tüm değerler dışlanıyordu.
Örneğin <a href="art.htm"> ifadesiyle eşleşmemekteydi.

Oysa benim ihtiyacım olan şey, ardışık karakterleri (javascript ifadesini) dışlamaktır.

Hayli bir uğraş ve arayış sonrasında şu bilgiye ulaştım:

If your condition is that a line should not contain something, use negative lookahead.
^((?!regexp).)*$ matches a complete line that does not match regexp. 

Burada, daha önceden bilmediğim sihirli ifade şu idi: (?!regexp) 

Sonuç olarak aşağıdaki kullanım ihtiyacımı karşılamaktadır:

href="((?!javascript|\#).*?)"

Bu sayede javascript veya # ifadeleriyle başlayan değerler hariç tutuluyordu.

Yararlanılan Kaynak:
www.regular-expressions.info/completelines.html

İngilizce kelime ezberleme oyunu: vav.mbirgin.com
Abonelik Bilgisi Abonelik
Kullanıcı Adı:
Parola:
Bilgi Hatırlatma Yeni Üyelik
İletişim | Kullanım Şartları | Reklam Bilgileri | Tüm Üyeler | Ne Nasıl Yapılır? | Arama | RSS | Twitter | Facebook | Youtube

Son Üyeler: Gakk, busbus, siyamiaytar, 1234123123123, Siyami,
Son Oturumlar: