2011-02-08 2 views
1

정규식을 사용하여 특정 문자열을 포함하지 않는 조각과 일치하는 패턴을 만들 수 있습니까?regex를 사용하여 다른 문자열을 포함하지 않는 문자열과 일치시키는 방법이 있습니까?

이 마법 정규식이 입력 걸릴 것하고 무슨 괄호 사이에 검사 : (foo bar) (barfoo) (zab) (foozab)를하고 괄호 사이 foo 포함되어 있지 않기 때문에 단지 zab을 반환합니다.

이것이 가능한가, 아니면 그냥 괄호 사이의 모든 것을 포착하고 그들을 떼어 내기위한 언어 기능을 사용해야합니까?

답변

7

엔진에 따라 미리보기 주장을 사용할 수 있습니다. 정규식

\(((?:(?!foo)[^)])+)\) 

문자열 내부의 문자 적 ​​(이 경우 단지 문자열 인) 하위 표현 "foo는"일치하지 않는 괄호 문자열과 일치하는 것입니다. 여기

이 확장 된 형태 인 :

\(   # match the opening (
    (  # capture the text inside the parens 
    (?:  # we need another group, but don't capture it 
    (?!foo) # fail if the sub-expression "foo" matches at this point 
    [^)] # match a non-paren character 
    )+  # repeat that group 
)   # end the capture 
\)   # end the parens 
관련 문제