>  기사  >  백엔드 개발  >  중첩된 대괄호 일치에서 "[^][]" 정규식 구성 요소는 어떻게 작동합니까?

중첩된 대괄호 일치에서 "[^][]" 정규식 구성 요소는 어떻게 작동합니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-07 07:03:02580검색

How does the

"[^][]" 정규식은 무엇을 의미합니까?

제공된 정규식에서:

\[(?:[^][]|(?R))*\]

"[^][]" 정규식 구성 요소는 "[" 또는 "]"를 제외한 모든 문자와 일치하는 문자 클래스입니다.

문자 클래스 설명

A 문자 클래스는 지정된 문자 범위 내의 모든 문자와 일치합니다. 이 경우 "[^]"는 "뒤에 ]가 오지 않음"을 의미하므로 "[^][]"는 "]"가 뒤에 오지 않는 모든 문자와 효과적으로 일치합니다.

정규식 재귀

"[^][]" 주위의 괄호는 비캡처 그룹을 나타냅니다. 그룹 내에서 "?R" 토큰은 전체 정규식에 대한 재귀 참조를 나타냅니다. 이를 통해 정규식이 중첩된 대괄호와 일치할 수 있습니다.

이스케이프 시퀀스 방지

PCRE(PHP의 preg_ 함수에서 사용하는 정규식 엔진)에서는 그렇지 않습니다. 문자 클래스 내에서 "[" 또는 "]"를 이스케이프하는 데 필요합니다. "[^][]" 안의 "]"가 문자 클래스에 속한다는 것이 확실하기 때문입니다.

인라인 xx 수정자(PHP 7.3 )

PHP 7.3에서는 인라인 xx 수정자를 사용하여 문자 클래스 내의 공백 문자를 무시할 수 있습니다. 이를 통해 다음과 같은 덜 모호한 클래스를 작성할 수 있습니다.

(?xx) [^ ][ ]     [ ] ]      [ [ ]      [^ [ ]

호환성 및 특이 사항

"[^][]" 구문은 대부분의 정규 표현식과 호환됩니다. , PCRE, Perl, Python, Java 등을 포함합니다. 그러나 Ruby 및 JavaScript에서는 인식되지 않습니다(이전 버전의 Internet Explorer 제외).

중첩 대괄호 일치

샘플 정규 표현식의 맥락에서, "[^][]"는 대괄호가 일치하는지 확인하여 중첩된 대괄호가 일치하는지 확인합니다.

추가 참고 사항

  • "[^ ]]"는 "[^]"가 "]" 다음에 오지 않는 문자와 일치하므로 명확합니다. 따라서 후속 "]"는 문자 클래스에 속합니다.
  • 최신 JavaScript 브라우저는 일반적으로 "를 정의하는 ECMA 사양을 따릅니다. []"는 항상 일치하지 않는 정규식 토큰입니다.
  • 제공된 최적화 정규식 "([[^][](?:(?-1)[^][] )* ])"는 불필요한 변경을 방지하여 성능을 향상시킵니다.

위 내용은 중첩된 대괄호 일치에서 "[^][]" 정규식 구성 요소는 어떻게 작동합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.