>  기사  >  백엔드 개발  >  정규식 내에서 문자 클래스 "[^][]"는 무엇을 합니까?

정규식 내에서 문자 클래스 "[^][]"는 무엇을 합니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-07 00:47:02199검색

What does the character class

"[^][]" 문자 클래스 디코딩

정규식 내에서 [(?:[^][]|(? R))*], 문자 클래스 "[^][]"는 독특한 질문을 제기합니다. 그 의미를 명확히 하고 모호함을 없애자.

"[^][]"

"[^][]"의 의미는 어떤 문자 클래스와도 일치하는 문자 클래스입니다. "[" 및 "]"를 제외한 문자입니다. 이 표현식은 일치하는 문자 집합에서 "[" 및 "]"를 효과적으로 제외합니다.

모호성 해결

어떤 사람들은 "[^]" 시퀀스가 ​​다음과 같다고 주장할 수도 있습니다. 모호하므로 "^" 및 리터럴 "]"에 대한 이스케이프로 해석될 수 있습니다. 그러나 preg_ 함수에서 사용하는 정규식 엔진인 PCRE는 이러한 모호성을 해결합니다. "[^]"는 PCRE에서 유효하지 않기 때문에 구문 분석에서는 "]"를 문자 클래스 내에 포함된 것으로 해석하여 클래스가 후속 "]"로 닫히도록 둡니다.

추가 상황별 규칙

  • "[^]"는 "["를 이스케이프하지 않고 "1" 또는 "[^][]"로 쓸 수 있습니다. 또는 "]".
  • PHP 7.3의 인라인 "xx" 한정자는 문자 클래스 내에서도 이스케이프할 필요가 없습니다.
  • 문자 클래스의 첫 번째 문자가 해석을 결정합니다. "[^]]"는 "]" 뒤에 오는 모든 문자와 일치하고, "2]"는 "a" 뒤에 "]"가 오는 비-"a"와 일치합니다.
  • JavaScript에서 "[]"는 절대 일치하지 않는 토큰으로 정의되는 반면, "[^]"는 모든 문자와 일치합니다.
  • 제공되는 정규식 패턴 [(?:[^][]|(?R ))*]는 대괄호와 일치하며 중첩된 대괄호에 대한 재귀를 허용합니다.
  • 대괄호 일치를 위한 더 효율적이고 재사용 가능한 패턴은 "([[^][](?:(?-1)[입니다. ^][])* ])".

결론

문자 클래스 "[^][]"는 단순히 문자 "를 제외합니다. [" 및 "]"가 일치합니다. 이 해석은 JavaScript를 포함한 PCRE 호환 엔진 전체에서 일관됩니다(일부 예외 있음). 이러한 규칙을 이해함으로써 프로그래머는 정규식 패턴에서 이 문자 클래스를 효과적으로 활용할 수 있습니다.


  1. a

위 내용은 정규식 내에서 문자 클래스 "[^][]"는 무엇을 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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