2013-03-27 2 views
1

특정 문자로 시작하지 않는 패턴 만 일치시킬 수 있는지 궁금합니다. "foo"와 일치하고 싶지만 "afoo"와는 일치하지 않습니다. 어떤 정규식 연산자가 필요합니까? 나는 맞는 것을 찾을 수없는 것 같습니다. 아마 앵커일까요?문자로 시작하지 않는 경우 루비 정규식 일치 텍스트

예를 들어 나는

foo foo afoo foo 

bar bar afoo bar 

에 감사를 변경하고 싶습니다.

내 대답은 아래 예에서 정확하지만 afoo 대신/foo를 사용하면 어떨까요? 그게 똑같이 행동하지 않는 것 같니?

답변

3
str = "foo foo afoo foo" 

str.gsub(/\bfoo/, "bar") #=> "bar bar afoo bar" 
+0

foo가 a 대신 앞에/그게 효과가없는 것 같아서? – zProgrammer

+0

그런 다음 @mu가 제공 한 제안을 따르십시오 : 'str.gsub (/ (? AGS

4

네거티브가 뒤떨어져있는 것처럼 들리는군요. (?<!expr1)expr2이라고 말하면 이 바로 앞에 오지 않는 한 일치하는 expr2과 일치합니다. 예 :

>> 'foo foo afoo foo'.gsub(/(?<!a)foo/, 'bar') 
=> "bar bar afoo bar" 
관련 문제