정규식 내에서 문자 클래스 '[^][]'는 무엇을 합니까?
Nov 07, 2024 am 12:47 AM"[^][]" 문자 클래스 디코딩
정규식 내에서 [(?:[^][]|(? R))*], 문자 클래스 "[^][]"는 독특한 질문을 제기합니다. 그 의미를 명확히 하고 모호함을 없애자.
"[^][]"
"[^][]"의 의미는 어떤 문자 클래스와도 일치하는 문자 클래스입니다. "[" 및 "]"를 제외한 문자입니다. 이 표현식은 일치하는 문자 집합에서 "[" 및 "]"를 효과적으로 제외합니다.
모호성 해결
어떤 사람들은 "[^]" 시퀀스가 다음과 같다고 주장할 수도 있습니다. 모호하므로 "^" 및 리터럴 "]"에 대한 이스케이프로 해석될 수 있습니다. 그러나 preg_ 함수에서 사용하는 정규식 엔진인 PCRE는 이러한 모호성을 해결합니다. "[^]"는 PCRE에서 유효하지 않기 때문에 구문 분석에서는 "]"를 문자 클래스 내에 포함된 것으로 해석하여 클래스가 후속 "]"로 닫히도록 둡니다.
추가 상황별 규칙
- "[^]"는 "["를 이스케이프하지 않고 "1" 또는 "[^][]"로 쓸 수 있습니다. 또는 "]".
- PHP 7.3의 인라인 "xx" 한정자는 문자 클래스 내에서도 이스케이프할 필요가 없습니다.
- 문자 클래스의 첫 번째 문자가 해석을 결정합니다. "[^]]"는 "]" 뒤에 오는 모든 문자와 일치하고, "2]"는 "a" 뒤에 "]"가 오는 비-"a"와 일치합니다.
- JavaScript에서 "[]"는 절대 일치하지 않는 토큰으로 정의되는 반면, "[^]"는 모든 문자와 일치합니다.
- 제공되는 정규식 패턴 [(?:[^][]|(?R ))*]는 대괄호와 일치하며 중첩된 대괄호에 대한 재귀를 허용합니다.
- 대괄호 일치를 위한 더 효율적이고 재사용 가능한 패턴은 "([[^][](?:(?-1)[입니다. ^][])* ])".
결론
문자 클래스 "[^][]"는 단순히 문자 "를 제외합니다. [" 및 "]"가 일치합니다. 이 해석은 JavaScript를 포함한 PCRE 호환 엔진 전체에서 일관됩니다(일부 예외 있음). 이러한 규칙을 이해함으로써 프로그래머는 정규식 패턴에서 이 문자 클래스를 효과적으로 활용할 수 있습니다.
위 내용은 정규식 내에서 문자 클래스 '[^][]'는 무엇을 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

인기 기사

인기 기사

뜨거운 기사 태그

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











PHP의 컬 : REST API에서 PHP Curl Extension 사용 방법

Laravel Back End : Part 2, React가있는 React 앱 구축
