(?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
つまり、マッチ
- かっこ内の数字またはサブ式、その後に
- ゼロ個以上の演算子と数字または括弧内のサブ式。
答え2
入れ子括弧などの入れ子構造を一致させるツールです。
数学的に定義された正規表現はこれと一致することはできません。
\( ( [^()]*+ | (?R) )* \)
オンラインで見る(スペースは無視する必要があります)。
お読みください: