Will this expression
\$|(?:USD)([0-9]+)\.([0-9]{2})
match the string $44.95 and capture the dollar and cents amount
in \1 and \2?
No. The or operator | has low precidence.
The expression means
match \$
OR
match (?:USD)([0-9]+)\.([0-9]{2})
| Regular Expression | |||
| String | |||
| Group 0 | |||
| Group 1 | Group 2 | Group 3 | Group 4 |
As we have seen, quantifiers are greedy. This means that:
For example, when the expression
(X+)([A-Z]+)
matches the string
XXXX
the greedy X+ could potentially match
the entire string.
But it only matches the first three characters so that
the final [A-Z]+ of the expression can match the final X of the string.
The strings matched by the example expression are:
strings that start with a prefix of one or more characters X, followed by one or more characters A through Z.
Find another regular expression that matches these same strings. (And use the applet to confirm that it works.)