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.
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|