2017-12-24 13 views
2

내 로그에서 예외를 검색하려고합니다. 시작 정규식 :여러 값에 대한 정규 표현식 부정 lookbehind

\wException\b 

(I는 "예외"를,뿐만 아니라 단어를 예외의 이름을 잡는 경우 InvalidOperationException을 예 해요 있도록 \w이, 그리고 \b 예외 예 : "SomeExceptionHandler"다른 형태를 제외하는 것입니다.)

이것은 잘 작동했지만 매우 자주 반복되는 예외가 있음을 발견했습니다. 그것을 FooException이라고 부르 자. 내 정규식을 변경하여 제외 표식을 포함 시켰습니다.

\w(?<!Foo)Exception\b 

"FooException"이 제외되었습니다. 지금 나는 BarException도 많은 소음을 만들고 그것을 제외하고 싶다는 것을 알게되었습니다. 그래서 나는 lookbehind 안에 파이프를 넣으려고했다. :

\w(?<!(Foo|Bar))Exception\b 

... 그러나 이것은 유효하지 않은 정규 표현식으로 거부되었다.

그래서 lookbehind에서 여러 문자열을 제외 할 수 있습니까?

+1

사용하는 언어? – Rahul

답변

2

어떤 도구를 사용하고 있는지 언급하지 않았지만 가변 길이 lookbehind가 대부분의 정규 표현식에서 지원되지 않으므로 패턴을 거부 할 가능성이 큽니다.
간단한 해결 방법은 여러 모양 비하인드을하는 것입니다 :

\w(?<!Foo)(?<!Bar)Exception\b 

또한 전체 예외를 일치시킬 수 있습니다 :

\b(?!Foo|Bar)\w+Exception\b