217 |
\en linefeed (hex 0A) |
\en linefeed (hex 0A) |
218 |
\er carriage return (hex 0D) |
\er carriage return (hex 0D) |
219 |
\et tab (hex 09) |
\et tab (hex 09) |
220 |
\eddd character with octal code ddd, or backreference |
\eddd character with octal code ddd, or back reference |
221 |
\exhh character with hex code hh |
\exhh character with hex code hh |
222 |
\ex{hhh..} character with hex code hhh.. |
\ex{hhh..} character with hex code hhh.. |
223 |
.sp |
.sp |
1163 |
/ ( a ) (?| x ( y ) z | (p (q) r) | (t) u (v) ) ( z ) /x |
/ ( a ) (?| x ( y ) z | (p (q) r) | (t) u (v) ) ( z ) /x |
1164 |
# 1 2 2 3 2 3 4 |
# 1 2 2 3 2 3 4 |
1165 |
.sp |
.sp |
1166 |
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 |
1167 |
for that number by any subpattern. The following pattern matches "abcabc" or |
set for that number by any subpattern. The following pattern matches "abcabc" |
1168 |
"defdef": |
or "defdef": |
1169 |
.sp |
.sp |
1170 |
/(?|(abc)|(def))\e1/ |
/(?|(abc)|(def))\e1/ |
1171 |
.sp |
.sp |
1204 |
parentheses from other parts of the pattern, such as |
parentheses from other parts of the pattern, such as |
1205 |
.\" HTML <a href="#backreferences"> |
.\" HTML <a href="#backreferences"> |
1206 |
.\" </a> |
.\" </a> |
1207 |
backreferences, |
back references, |
1208 |
.\" |
.\" |
1209 |
.\" HTML <a href="#recursion"> |
.\" HTML <a href="#recursion"> |
1210 |
.\" </a> |
.\" </a> |
1246 |
for the first (and in this example, the only) subpattern of that name that |
for the first (and in this example, the only) subpattern of that name that |
1247 |
matched. This saves searching to find which numbered subpattern it was. |
matched. This saves searching to find which numbered subpattern it was. |
1248 |
.P |
.P |
1249 |
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 |
1250 |
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 |
1251 |
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 |
1252 |
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 |
1399 |
alternatively using ^ to indicate anchoring explicitly. |
alternatively using ^ to indicate anchoring explicitly. |
1400 |
.P |
.P |
1401 |
However, there is one situation where the optimization cannot be used. When .* |
However, there is one situation where the optimization cannot be used. When .* |
1402 |
is inside capturing parentheses that are the subject of a backreference |
is inside capturing parentheses that are the subject of a back reference |
1403 |
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 |
1404 |
succeeds. Consider, for example: |
succeeds. Consider, for example: |
1405 |
.sp |
.sp |
1628 |
"Comments" |
"Comments" |
1629 |
.\" |
.\" |
1630 |
below) can be used. |
below) can be used. |
1631 |
.P |
. |
1632 |
|
.SS "Recursive back references" |
1633 |
|
.rs |
1634 |
|
.sp |
1635 |
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 |
1636 |
when the subpattern is first used, so, for example, (a\e1) never matches. |
when the subpattern is first used, so, for example, (a\e1) never matches. |
1637 |
However, such references can be useful inside repeated subpatterns. For |
However, such references can be useful inside repeated subpatterns. For |
1645 |
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 |
1646 |
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 |
1647 |
minimum of zero. |
minimum of zero. |
1648 |
|
.P |
1649 |
|
Back references of this type cause the group that they reference to be treated |
1650 |
|
as an |
1651 |
|
.\" HTML <a href="#atomicgroup"> |
1652 |
|
.\" </a> |
1653 |
|
atomic group. |
1654 |
|
.\" |
1655 |
|
Once the whole group has been matched, a subsequent matching failure cannot |
1656 |
|
cause backtracking into the middle of the group. |
1657 |
. |
. |
1658 |
. |
. |
1659 |
.\" HTML <a name="bigassertions"></a> |
.\" HTML <a name="bigassertions"></a> |
2427 |
.rs |
.rs |
2428 |
.sp |
.sp |
2429 |
.nf |
.nf |
2430 |
Last updated: 18 October 2009 |
Last updated: 11 January 2010 |
2431 |
Copyright (c) 1997-2009 University of Cambridge. |
Copyright (c) 1997-2010 University of Cambridge. |
2432 |
.fi |
.fi |