2010-03-20 3 views
6

나는 스마일을 이미지로 바꿀 regexp가 있습니다. 여기)는 점은 0 :)을 변경하지 않고 :)) 및 :-)) 변경하면서 :) 및 :-) 그것은 :) 꽤 잘 작동) 및 :-)regexp 제외

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

입니다 하지만 어떻게 든 아직도 그래 :) 0시

내 실수는 어디 갔지?

답변

5

그래서 당신은 :):-) 일치하기를 원하지만 그들은 다른 )에 의해 0 앞에 나 올 수 없습니다? 그런 다음이 패턴은 다음과 같습니다 나는 펄 예를 추가 한

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

:

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

은 기본적으로 그것은

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

예입니다. – jfs

+0

오, 그래, 당신은 정규 표현식 전문가 여야합니다. 괜찮아, 고마워! – Vlad