| 239 |
\n linefeed (hex 0A) |
\n linefeed (hex 0A) |
| 240 |
\r carriage return (hex 0D) |
\r carriage return (hex 0D) |
| 241 |
\t tab (hex 09) |
\t tab (hex 09) |
| 242 |
\ddd character with octal code ddd, or backreference |
\ddd character with octal code ddd, or back reference |
| 243 |
\xhh character with hex code hh |
\xhh character with hex code hh |
| 244 |
\x{hhh..} character with hex code hhh.. |
\x{hhh..} character with hex code hhh.. |
| 245 |
</pre> |
</pre> |
| 1157 |
/ ( a ) (?| x ( y ) z | (p (q) r) | (t) u (v) ) ( z ) /x |
/ ( a ) (?| x ( y ) z | (p (q) r) | (t) u (v) ) ( z ) /x |
| 1158 |
# 1 2 2 3 2 3 4 |
# 1 2 2 3 2 3 4 |
| 1159 |
</pre> |
</pre> |
| 1160 |
A backreference to a numbered subpattern uses the most recent value that is set |
A back reference to a numbered subpattern uses the most recent value that is |
| 1161 |
for that number by any subpattern. The following pattern matches "abcabc" or |
set for that number by any subpattern. The following pattern matches "abcabc" |
| 1162 |
"defdef": |
or "defdef": |
| 1163 |
<pre> |
<pre> |
| 1164 |
/(?|(abc)|(def))\1/ |
/(?|(abc)|(def))\1/ |
| 1165 |
</pre> |
</pre> |
| 1193 |
In PCRE, a subpattern can be named in one of three ways: (?<name>...) or |
In PCRE, a subpattern can be named in one of three ways: (?<name>...) or |
| 1194 |
(?'name'...) as in Perl, or (?P<name>...) as in Python. References to capturing |
(?'name'...) as in Perl, or (?P<name>...) as in Python. References to capturing |
| 1195 |
parentheses from other parts of the pattern, such as |
parentheses from other parts of the pattern, such as |
| 1196 |
<a href="#backreferences">backreferences,</a> |
<a href="#backreferences">back references,</a> |
| 1197 |
<a href="#recursion">recursion,</a> |
<a href="#recursion">recursion,</a> |
| 1198 |
and |
and |
| 1199 |
<a href="#conditions">conditions,</a> |
<a href="#conditions">conditions,</a> |
| 1232 |
matched. This saves searching to find which numbered subpattern it was. |
matched. This saves searching to find which numbered subpattern it was. |
| 1233 |
</P> |
</P> |
| 1234 |
<P> |
<P> |
| 1235 |
If you make a backreference to a non-unique named subpattern from elsewhere in |
If you make a back reference to a non-unique named subpattern from elsewhere in |
| 1236 |
the pattern, the one that corresponds to the first occurrence of the name is |
the pattern, the one that corresponds to the first occurrence of the name is |
| 1237 |
used. In the absence of duplicate numbers (see the previous section) this is |
used. In the absence of duplicate numbers (see the previous section) this is |
| 1238 |
the one with the lowest number. If you use a named reference in a condition |
the one with the lowest number. If you use a named reference in a condition |
| 1385 |
</P> |
</P> |
| 1386 |
<P> |
<P> |
| 1387 |
However, there is one situation where the optimization cannot be used. When .* |
However, there is one situation where the optimization cannot be used. When .* |
| 1388 |
is inside capturing parentheses that are the subject of a backreference |
is inside capturing parentheses that are the subject of a back reference |
| 1389 |
elsewhere in the pattern, a match at the start may fail where a later one |
elsewhere in the pattern, a match at the start may fail where a later one |
| 1390 |
succeeds. Consider, for example: |
succeeds. Consider, for example: |
| 1391 |
<pre> |
<pre> |
| 1616 |
<a href="#comments">"Comments"</a> |
<a href="#comments">"Comments"</a> |
| 1617 |
below) can be used. |
below) can be used. |
| 1618 |
</P> |
</P> |
| 1619 |
|
<br><b> |
| 1620 |
|
Recursive back references |
| 1621 |
|
</b><br> |
| 1622 |
<P> |
<P> |
| 1623 |
A back reference that occurs inside the parentheses to which it refers fails |
A back reference that occurs inside the parentheses to which it refers fails |
| 1624 |
when the subpattern is first used, so, for example, (a\1) never matches. |
when the subpattern is first used, so, for example, (a\1) never matches. |
| 1633 |
that the first iteration does not need to match the back reference. This can be |
that the first iteration does not need to match the back reference. This can be |
| 1634 |
done using alternation, as in the example above, or by a quantifier with a |
done using alternation, as in the example above, or by a quantifier with a |
| 1635 |
minimum of zero. |
minimum of zero. |
| 1636 |
|
</P> |
| 1637 |
|
<P> |
| 1638 |
|
Back references of this type cause the group that they reference to be treated |
| 1639 |
|
as an |
| 1640 |
|
<a href="#atomicgroup">atomic group.</a> |
| 1641 |
|
Once the whole group has been matched, a subsequent matching failure cannot |
| 1642 |
|
cause backtracking into the middle of the group. |
| 1643 |
<a name="bigassertions"></a></P> |
<a name="bigassertions"></a></P> |
| 1644 |
<br><a name="SEC18" href="#TOC1">ASSERTIONS</a><br> |
<br><a name="SEC18" href="#TOC1">ASSERTIONS</a><br> |
| 1645 |
<P> |
<P> |
| 2396 |
</P> |
</P> |
| 2397 |
<br><a name="SEC28" href="#TOC1">REVISION</a><br> |
<br><a name="SEC28" href="#TOC1">REVISION</a><br> |
| 2398 |
<P> |
<P> |
| 2399 |
Last updated: 18 October 2009 |
Last updated: 11 January 2010 |
| 2400 |
<br> |
<br> |
| 2401 |
Copyright © 1997-2009 University of Cambridge. |
Copyright © 1997-2010 University of Cambridge. |
| 2402 |
<br> |
<br> |
| 2403 |
<p> |
<p> |
| 2404 |
Return to the <a href="index.html">PCRE index page</a>. |
Return to the <a href="index.html">PCRE index page</a>. |