고급 정규식: (?R) 재귀 정규식을 사용할 수 있는 상황을 찾을 수 없습니다.

고급 정규식: (?R) 재귀 정규식을 사용할 수 있는 상황을 찾을 수 없습니다.

(?R)재귀적인 Perl/PCRE 정규식이 도움이 되는 상황을 설명할 수 있는 사람이 있습니까?

나는 읽었다

하지만 아직 활용 사례를 찾을 수 없습니다.

답변1

일반적인 예는 괄호 안에 숫자, 연산자 및 하위 표현식이 포함된 산술 표현식을 일치시키는 것입니다.

([0-9]+|\((?R)\))([-+*\/]([0-9]+|\((?R)\)))*
 ^^^^^^ ^^^^^^^^  ^^^^^^^ ^^^^^^ ^^^^^^^^
 number (subexp)   oper   number (subexp)
\______  _______/        \______  _______/
       \/                       \/
  One of those             One of those
                  \__________  ____________/
                             \/
                     Zero or more of those

즉, 일치

  • 괄호 안의 숫자 또는 하위 표현식, 그 뒤에
  • 0개 이상의 연산자와 숫자 또는 괄호 안의 하위 표현식.

답변2

중첩 괄호와 같은 중첩 구조를 일치시키는 도구입니다.
수학적으로 정의된 정규 표현식은 이와 일치할 수 없습니다.

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

온라인으로 보기(공백은 무시해야 합니다).

읽어주세요:

관련 정보