Yes. With oniguruma regex engine, which is built in in Ruby 1.9, and is installable on Ruby 1.8, you can do that. You name a subregex with (?<name>...)
or (?'name'...)
. Then you call a subregex with g<name>
or g'name'
within the same regex. So your regex translated to oniguruma regex will be:
re = %r{
(?<re>
(
(?:
(?> [^()]+ )
|
g<re>
)*
)
)
}x
Also note that multi-byte string module in PHP >=5 uses oniguruma regex engine, so you will be able to do the same.
The manual for oniguruma is here.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…