Doing both regex match and assignment within a If loop?

Neil Cerutti neilc at norwich.edu
Fri Mar 29 08:51:17 EDT 2013


On 2013-03-29, Alain Ketterlin <alain at dpt-info.u-strasbg.fr> wrote:
> Victor Hooi <victorhooi at gmail.com> writes:
>
>>     expression1 = re.compile(r'....')
>>     expression2 = re.compile(r'....')
> [...]
>
> Just a quick remark: regular expressions are pretty powerful at
> representing alternatives. You could just stick everything
> inside a single re, as in '...|...'
>
> Then use the returned match to check which alternative was
> recognized (make sure you have at least one group in each
> alternative).

Yes, but in a Python program it's more straightforward to program
in Python. ;)

But this is from a grade A regex avoider, so take it with a small
chunk of sodium.

>> Is it possible to somehow test for a match, as well as do assignment
>> of the re match object to a variable?

One way to attack this problem that's not yet been explicitly
mentioned is to match using a generator function:

def match_each(s, re_seq):
   for r in re_seq:
       yield r.match(s)

And later something like:

for match in match_each(s, (expression1, expression2, expression3)):
    if match:
        print(match.groups()) # etc...

-- 
Neil Cerutti



More information about the Python-list mailing list