2013-05-28 3 views
1

역 추적이 부정적인 예측 앞에서 어떻게 작동하는지 알고 싶습니다. like in ...부정적인 선견자 내에서 역 추적하기

 ^(?!.*some My Words$).*$ 

얼마나 멀리 정규식 엔진이 처음 시도합니까 .*. somewhere awesome My Words을 테스트하고 있습니다. 내가 기대하는 것은 거부되어야하지만 그렇지 않다. backtracking이 여기서 어떻게 작동하고 어떻게 일어나고 있는지?

+0

확인을 위해 중요 할 것이다 ... 나는 두 공간을 사용 생각 입력 문자열에 ... –

+0

정규 표현식 "dfjsdlfj skldfjsd klfjsdklf jsdlsdkfjsdl jsdfkl"을 사용하면 일치하는 부분이 생깁니다. –

+0

그렇습니다. 일치 할 것으로 기대됩니다 .. .. '내 단어들'로 끝나는 문자열에 대해서만 거부합니다 .. –

답변

1

예제는 위의 정규 표현식에 대해 거부됩니다.

.*은 모두를 먹고 끝까지 도달합니다. 즉 마지막으로 s 이후입니다. 그런 다음 some My Words과 일치 할 때까지 1 씩 뒤로 추적합니다.

.*?으로는 처음으로 some My Words


.*?까지 일치 할 것은 .*보다 낫다하지만 성능 향상은 문자열

+0

좋아 .. 이제는이 표현들이 어떻게 작동하는지 잊지 않을 것입니다. 샘플에는 두 개의 공백이 있습니다. 문제가 발생했습니다 .. 여기에서 테스트 중입니다 .. http://www.regexplanet.com/advanced/dotnet/index.html –