高度な正規表現:(?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

つまり、マッチ

  • かっこ内の数字またはサブ式、その後に
  • ゼロ個以上の演算子と数字または括弧内のサブ式。

答え2

入れ子括弧などの入れ子構造を一致させるツールです。
数学的に定義された正規表現はこれと一致することはできません。

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

オンラインで見る(スペースは無視する必要があります)。

お読みください:

関連情報