정규 표현식의 가변 길이 Lookbehind 어설션
정규 표현식은 강력한 패턴 일치 기능을 제공하지만 가변 길이 Lookbehind 어설션 구현은 오랫동안 논쟁의 주제였습니다.
Lookbehind Assertions을 사용한 구현
현재 가변 길이 Lookbehind Assertion은 Python의 regex 모듈에서 지원됩니다. 구문은 (?
<code class="python">>>> import regex >>> m = regex.search('(?<!foo.*)bar', 'f00bar') >>> print(m.group()) bar >>> m = regex.search('(?<!foo.*)bar', 'foobar') >>> print(m) None</p> <p><strong>Lookbehind Assertions가 없는 대안</strong></p> <p>lookbehind 주장이 없는 경우 두 가지 대안이 있습니다.</p> <ul> <li> <p><strong>K(Keep):</strong> 이 기호는 이전 패턴에서 점을 표시합니다. 일치하는 문자는 대체 또는 그룹화 전에 삭제됩니다.</p> <pre class="brush:php;toolbar:false">s/(?<=foo.*)bar/moo/s;
다음과 같습니다:
s/foo.*\Kbar/moo/s;
부정 예측: 이 기술은 부정형을 사용합니다. "foo"가 없는지 미리 확인하세요.
s/(?<!foo.*)bar/moo/s;
다음과 같습니다:
s/^(?:(?!foo).)*\Kbar/moo/s;
향후 구현
Perl 및 JavaScript와 같은 주류 언어에 가변 길이 뒤돌아보기 주장이 없기 때문에 향후 구현에 대한 의문이 제기되었습니다. 언젠가 이들 언어가 Python의 정규식과 유사한 향상된 정규식 모듈을 채택할 가능성이 있습니다.
대안의 제한
추가 질문
위 내용은 가변 길이 Lookbehind 어설션: 정규 표현식의 미래?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!