PCRE는 {a^n b^n c^n;과 같은 상황에 맞는 문법을 일치시킬 수 있습니까?

Susan Sarandon
풀어 주다: 2024-10-23 01:06:03
원래의
995명이 탐색했습니다.

Can PCRE Match Context-Sensitive Grammars Like {a^n b^n c^n;?

PCRE와 상황에 맞는 문법 일치: A^n B^n C^n(예: "aaabbbccc")

일반 동안 표현식은 전통적으로 정규 문법 구문 분석과 연관되어 있지만 PCRE와 같은 최신 구현은 확장된 기능을 제공합니다. 이는 질문을 제기합니다. PCRE를 사용하여 더 복잡하고 상황에 맞는 문법을 구문 분석할 수 있습니까?

구체적으로 상황에 맞는 문법에 따라 문자열을 일치시키는 문제를 살펴보겠습니다. {a^n b^n c^n; n > 0} (예: "aaabbbccc").

정규식 솔루션:

NullUserException의 초기 시도에서 영감을 받아 다음 정규식을 고안했습니다.

~^
(?=(a(?-1)?b)c)
a+(b(?-1)?c)
$~x
로그인 후 복사

설명:

  • 외부 섹션 ~^...$~는 문자열이 원하는 패턴으로 시작하고 끝나는 것을 보장합니다.
  • 괄호 내부 , ~?(a(?-1)?b)c~는 as와 bs의 개수가 동일한지 확인하는 긍정적 예측 어설션입니다.
  • ~a ~는 as의 개수와 일치합니다.
  • ~b(?-1)?c~는 cs가 뒤따르는 동일한 수의 bs와 일치합니다.
  • (?-1)의 (?-)를 사용하면 다음과 같은 as 및 bs의 임의 시퀀스를 일치시킬 수 있습니다. 예측 어설션을 충족합니다.

테스트 사례:

다음을 포함한 다양한 입력에 대해 정규식을 테스트했습니다.

  • "aabbcc " - 일치 성공
  • "aaabbbccc" - 일치 성공
  • "aaabbbcc" - 일치 실패(올바른)
  • "aaaccc" - 일치 실패(올바른)
  • "aabcc" - 일치 실패(올바름)
  • "abbcc" - 일치 실패(올바름)

결론:

이 정규 표현식은 정규 문법을 넘어 {a^n b^n c^n}과 같은 상황에 맞는 문법까지 일치시키는 현대 정규 표현식의 놀라운 힘을 보여줍니다. 더 복잡한 패턴을 구문 분석하는 이 기능은 정규식 애플리케이션에 대한 새로운 가능성을 열어줍니다.

위 내용은 PCRE는 {a^n b^n c^n;과 같은 상황에 맞는 문법을 일치시킬 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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