(?R)
재귀적인 Perl/PCRE 정규식이 도움이 되는 상황을 설명할 수 있는 사람이 있습니까?
나는 읽었다
- https://regular-expressions.mobi/recursebacktrack.html?wlr=1
- https://perldoc.perl.org/perlre.html#(%3fPARNO)-(%3f-PARNO)-(%3f%2bPARNO)-(%3fR)-(%3f0)
하지만 아직 활용 사례를 찾을 수 없습니다.
답변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) )* \)
온라인으로 보기(공백은 무시해야 합니다).
읽어주세요: