Regular Expression bug?

Chris Angelico rosuav at gmail.com
Thu Mar 2 14:28:22 EST 2023


On Fri, 3 Mar 2023 at 06:24, jose isaias cabrera <jicman at gmail.com> wrote:
>
> Greetings.
>
> For the RegExp Gurus, consider the following python3 code:
> <code>
> import re
> s = "pn=align upgrade sd=2023-02-"
> ro = re.compile(r"pn=(.+) ")
> r0=ro.match(s)
> >>> print(r0.group(1))
> align upgrade
> </code>
>
> This is wrong. It should be 'align' because the group only goes up-to
> the space. Thoughts? Thanks.
>

Not a bug. Find the longest possible match that fits this; as long as
you can find a space immediately after it, everything in between goes
into the .+ part.

If you want to exclude spaces, either use [^ ]+ or .+?.

ChrisA


More information about the Python-list mailing list