http://qs321.pair.com?node_id=812921


in reply to Re: Regex fun
in thread Regex fun

I think it's important to note that \1 is not a variable (which is why you can't use it outside of a regex);
But you can, sometimes, use it in the replacement part.
think it's important to note that \1 is not a variable (which is why you can't use it outside of a regex); the variable that contains the contents of the first capture group is $1, but that's empty until the capture has completed.
But in /([0-9]+){$1}/, the first capture is completed before the quantifier. So, that's not the reason.
For example, /\+32767.{32767}/ is rejected at compile time
Yes, but that's considered a bug. It's a restriction that should have been removed after the regexp engine was no longer recursive.
“Why, then,” you ask, “is something like /(.)\1/, which suffers from the same compilation problem, OK?”
That's not the same problem. {...} is one of the mini-languages inside regular expressions. Compare it with [...]. [\1] doesn't refer back to something else either.

But one can defer a subpattern. The syntax is (??{ }). This is what the OP wants, and this is what the OP ought to use.