matching any number of any character

Carel Fellinger cfelling at iae.nl
Mon Aug 23 18:10:35 EDT 1999


Lyn A Headley <laheadle at boguscs.uchicago.edu> wrote:

> accomplish such a task.  I thought this would work:

it does...

>>>> import regex
>>>> rx = regex.compile('\(.\|\n\)+')
>>>> rx.match('abc')
> 3

you see, it just matched 3 characters, but...

>>>  rx.group(1)
> 'c'

here you are tricked by the semantics of a quantified grouping operator.
A quantified group only remembers the last match, and as your group only
matches a single character, 'c' it is:)
(( shouldn't this be documented in the re module? it has stung more people
   recently ))

> but I wanted 'abc'!

so you have to refer to the whole match (rx.group(0)) or get the
quantification inside a group. e.g.

>>> rx = regex.compile('\(\(.\|\n|)+\)')
>>> rx.group(1)
'abc'
>>> rx.group(2)
'c'

-- 
groetjes, carel




More information about the Python-list mailing list