php - PCRE 정규식 어설션

伊谢尔伦
풀어 주다: 2016-11-21 17:16:07
원래의
1543명이 탐색했습니다.

어설션은 현재 일치하는 위치 앞이나 뒤의 문자를 테스트하는 것으로 실제로 어떤 문자도 사용하지 않습니다. 단순 어설션 코드에는 b, B, A, Z, z, ^, $ 등이 포함됩니다. 더 복잡한 어설션은 하위 그룹에 코딩됩니다. Lookahead 어설션(현재 위치에서 앞으로 테스트)과 Lookbehind 어설션(현재 위치에서 뒤로 테스트)의 두 가지 유형이 있습니다.

어설션 하위 그룹의 일치는 여전히 일반적인 방식으로 수행되지만 차이점은 현재 일치 지점이 변경되지 않는다는 것입니다. 예측 어설션(이 일치가 true라고 어설션)의 긍정적 어설션은 "(?="로 시작하고, 부정적 어설션은 "(?!"로 시작합니다. 예를 들어 w+(?=;)는 세미콜론이 뒤에 오는 단어와 일치하지만 일치합니다. 결과에는 세미콜론이 포함되지 않습니다. foo(?!bar)는 바로 뒤에 "bar"가 오지 않는 모든 "foo" 항목과 일치합니다. 유사한 패턴(?!foo)bar를 참고하세요. 이 패턴은 모든 항목을 찾는 데 사용할 수 없습니다. "bar"가 앞에 오지 않는 경우 "foo"는 "bar"와 일치하며 다음 세 문자가 "bar"일 때 어설션(?!foo)이 항상 TRUE이기 때문에 "bar"가 발견됩니다.

lookbehind 어설션의 긍정적인 어설션은 "(?<="로 시작하고, 부정적인 어설션은 "(?

여러 어설션(순서 상관없음)이 동시에 나타날 수 있습니다. 예를 들어 (?<=d{3})(?

이 경우 첫 번째 Assertion은 (현재 매칭 지점)의 처음 6자를 확인하여 처음 3자가 숫자인지 확인하고, 두 번째 Assertion에서는 (현재 매칭 지점)의 처음 3자를 확인합니다. )은 "999"가 아닙니다.

어설션은 복잡도에 관계없이 중첩될 수 있습니다. 예를 들어, (?<=(?

주장 하위 그룹은 비캡처 하위 그룹이며 한정자로 수정할 수 없습니다. 왜냐하면 동일한 항목에 대해 여러 주장을 만드는 것은 의미가 없기 때문입니다. 모든 주장에 캡처 하위 그룹이 포함되어 있으면 다음을 수행해야 합니다. 패턴에서 하위 그룹 수를 캡처하면 모두 계산됩니다. 그러나 부분 문자열 캡처는 부정적인 주장에는 의미가 없으므로 긍정적인 주장에만 사용할 수 있습니다.

어설션을 포함하여 보유할 수 있는 최대 하위 그룹 수는 200개입니다.


관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!