2010-03-20 27 views
6

Gülen görüntülere değiştirmek için regexp kullanıyorum. Burada) noktası 0 :) değiştirmeye değildir ve :)) ve :-)) değiştirirken :) ve :-) O :) ile oldukça iyi çalışıyor) ve :-)regexp dışlama

(?:(?![0]:\)|:\)\)|:-\)\)))(:\)|:-\)) 

olduğunu ama her nasılsa hala yakalar :) 0 :)

Hatam nerede?

cevap

5

Yani :) ve :-) eşleştirmek istediğiniz, fakat bir başka ) tarafından 0 önce veya sonra edilmemelidir? Sonra bu model: Ben Perl örnek ekledik

$ echo ':) :-) ok 0:) :)) :-)) 0:-)) 0:-) :)' | \ 
> perl -lne'print $1 while /(?<!0)(:-?\))(?!\))/g' 
:) 
:-) 
+0

:

(?<!0):-?\)(?!\)) 

Temel olarak

(?<!0) : negative lookbehind; must not be preceded by 0 :-?\) : smiley with optional nose (?!\)) : negative lookforward; must not be followed by) 

Örnek bulunuyor. – jfs

+0

Oh evet, regexp guru olmalısın. İyi çalışıyor, teşekkürler! – Vlad