2013-10-04 3 views

답변

5

[ERROR] Internal Error에 대하여, 당신의 패턴이 일치 :

+------------------------ pos 0, len 7 "[ERROR]" 
    | +------------------- pos 7, len 15 " Internal Error" 
    | |    +----- pos 22, len 0 "" 
    | |    | 
___|___ | ___________|____________ 
/  \/\/      \ 
\[ERROR\].*(?!.*[Ii]nternal [Ee]rror) 

당신은 Internal Error[ERROR] 후 임의의 위치에서 시작하지 않도록해야합니다.

/\[ERROR\](?!.*[Ii]nternal [Ee]rror)/s 
+0

나를 위해 일했습니다. 감사합니다 – aasthetic

+0

내 대답이 업데이트되었습니다. – ikegami

-1

(\[ERROR\])(?:.(?![Ii]nternal [Ee]rror))+.

+0

편집 됨, 공간을 고려하지 않았습니다. –

+0

대답을 확장하여 질문자에게 왜 이것이 원하는 결과를 얻었는지 설명하고 가능하면 문서에 연결하는 것을 고려하십시오. 사실, 이것은 단지 약간 유용합니다. –

+0

은 (는)'[ERROR] Internal Error.'에 대해 실패합니다 (1). – ikegami

2

사용 명확성을 위해이 개 정규 표현식 : [^CHAR]* 말했다


CHAR에 그대로

/\[ERROR\](?:(?![Ii]nternal [Ee]rror).)*\z/s 

(?:(?!STRING).)*\z 당신이 다음에 위를 단순화 할 수 있습니다, STRING이다/단순함 (! ~은 "일치하지 않음"을 의미)

if (($a =~ /\[ERROR\]/) && ($a !~ /[Ii]nternal [Ee]rror/)) { 
    #do your stuff 
} 
+1

내부 오류 [ERROR]'에 대해 참이지만, OP가 말한 내용에도 불구하고 이는 아마도 괜찮을 것입니다. – ikegami

관련 문제