There's an error in your understanding, if you think that the ^ should cause the expression not to match. It matches the beginning of the string, then multiple digits any number of times. Then the last capture has to match at the end of string.
You see, the * allows the group to match multiple times, and each time through, the capture group gets overwritten. So it can match everything up to "81" the first pass, then throw away that capture, capture "1" instead, and then the \1 matches, and the whole match succeeds.
Sounds like Java's regex engine just doesn't try hard enough.
Caution: Contents may have been coded under pressure.
| [reply] |
I understand that ^ here is "from the begining of the sting".
I didn`t know, that each match would overwrite capture group. Thanks. :)
I can`t find something about overwiting capture group in perlretut (am I a bad finder?). Are there any docs about it? Thanks. :)
Nick <znick at inbox dot ru>
| [reply] |
| [reply] |
does java's regex engines support the (?:) feature? that may also be why it's not matching. | [reply] |
Yes, it supports (?:). But, probably, it doen`t overwite capture group each mach of (?:(\d+)|::).
Nick <znick at inbox dot ru>
| [reply] |