次の文字列があります。
The {quick} brown fox {jumps {over {deep} the} {sfsdf0} lazy} dog {sdfsdf1 {sdfsdf2}
そしてPHPの正規表現:
/(?=\{((?:[^{}]+|\{(?1)\})+)\})/g
次の一致が得られます。
[5-10] `quick`
[23-60] `jumps {over {deep} the} {sfsdf} lazy`
[30-45] `over {deep} the`
[36-40] `deep`
[48-54] `sfsdf0`
[76-83] `sdfsdf2`
http://regex101.com/r/fD3iZ2を参照してください。
私はRubyで同等の作業をしようとしていますが、(?1)
...に問題があり、undefined group option
エラーが発生します:
str = "The {quick} brown fox {jumps {over {deep} the} {sfsdf} lazy} dog {sdfsdf {sdfsdf}"
str.scan /(?=\{((?:[^{}]+|\{(?1)\})+)\})/
SyntaxError: undefined group option: /(?=\{((?:[^{}]+|\{(?1)\})+)\})/
http://fiddle.re/n6w4nを参照してください。
偶然にも、Javascript と Python で同じ種類のエラーが発生します。
私の正規表現 foo は今日ほとんど使い果たされています。