수색…


통사론

  • 긍정적 인 선견자 : (?=pattern)
  • 부정적 예측 : (?!pattern)
  • 긍정적 인 표정 : (?<=pattern)
  • 부정적인 lookbehind : (?<!pattern)

비고

모든 regex 엔진에서 지원되지 않습니다.

또한 많은 정규 표현식 엔진은 lookbehinds 내부의 패턴을 고정 길이 문자열로 제한합니다. 예를 들어, 패턴 (?<=a+)baaabb 와 일치해야하지만 파이썬에서는 오류가 발생합니다.

캡쳐 그룹은 역 참조를 포함하여 예상대로 작동하고 허용됩니다. 미리보기 / lookbehind 자체는 캡처 그룹이 아닙니다.

기초

긍정적 인 미리보기 (?=123) 는 텍스트가 일치하는 패턴을 포함시키지 않고 주어진 패턴을 따르게합니다. 마찬가지로 긍정적 인 lookbehind (?<=123) 는 텍스트 앞에 주어진 패턴이 있다고 주장합니다. the =! 바꾸십시오 ! 주장을 부정합니다.


입력 : 123456

  • 123(?=456)123 ( 양성 예측 )과 일치합니다.
  • (?<=123)456 일치 456 ( 긍정적 인 lookbehind )
  • 123(?!456) 실패 ( 부정적 예측 )
  • (?<!123)456 실패 ( 부정보기 )

입력 : 456

  • 123(?=456) 실패
  • (?<=123)456 실패
  • 123(?!456) 실패
  • (?<!123)456 경기 456

lookbehind를 사용하여 결말 테스트하기

Lookbehind는 패턴의 끝에서 특정 방식으로 끝나는 지 여부를 확인하는 데 사용할 수 있습니다.

([az ]+|[AZ ]+)(?<! ) 는 후행 공백을 제외하고 소문자 또는 대문자 단어의 순서 만 찾습니다.

\ K로 가변 길이 lookbehind 시뮬레이션

일부 정규식 (Perl, PCRE, Oniguruma, Boost)은 고정 길이 lookbehind만을 지원하지만 패턴의 시작 부분에서 가변 길이 lookbehind를 시뮬레이트하는 데 사용할 수있는 \K 기능을 제공합니다. \K 가 발생하면이 지점까지 일치하는 텍스트는 삭제되고 \K 다음에 오는 패턴 부분과 일치하는 텍스트 만 최종 결과에 보관됩니다.

ab+\Kc

다음과 같습니다.

(?<=ab+)c

일반적으로 다음 형식의 패턴입니다.

(subpattern A)\K(subpattern B)

끝나는 유사하게 :

(?<=subpattern A)(subpattern B)

B 하위 패턴이 A 하위 패턴과 동일한 텍스트를 일치시킬 수있는 경우를 제외하고는 A 하위 패턴이 실제 lookbehind와 달리 텍스트를 계속 소비하므로 미묘하게 다른 결과가 발생할 수 있습니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow