how can I check if group member exist ?

H

Hans

Hi,

I'm doing a regular expression matching, let's say "a=re.search(re_str,match_str)", if matching, I don't know how many str/item will be extracted from re_str, maybe a.group(1), a.group(2) exist but a.group(3) does not.

Can I somehow check it? something like:
if exist(a.group(1)): print a.group(1)
if exist(a.group(2)): print a.group(2)
if exist(a.group(3)): print a.group(3)


I don't want to be hit by "Indexerror":Traceback (most recent call last):

thanks!!!
 
P

Peter Otten

Hans said:
Hi,

I'm doing a regular expression matching, let's say
"a=re.search(re_str,match_str)", if matching, I don't know how many
str/item will be extracted from re_str, maybe a.group(1), a.group(2) exist
but a.group(3) does not.

Can I somehow check it? something like:
if exist(a.group(1)): print a.group(1)
if exist(a.group(2)): print a.group(2)
if exist(a.group(3)): print a.group(3)


I don't want to be hit by "Indexerror":
Traceback (most recent call last):


thanks!!!

You could catch the exception

for index in itertools.count(1):
try:
print a.group(index)
except IndexError:
break

but in this case there's the groups() method:

for g in a.groups():
print g


The interactive interpreter is a good tool to find candidates for a solution
yourself:
['__class__', '__copy__', '__deepcopy__', '__delattr__', '__doc__',
'__format__', '__getattribute__', '__hash__', '__init__', '__new__',
'__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__',
'__str__', '__subclasshook__', 'end', 'endpos', 'expand', 'group',
'groupdict', 'groups', 'lastgroup', 'lastindex', 'pos', 're', 'regs',
'span', 'start', 'string']
From the above names lastindex looks promising, too. Can you find out how
the output of

for i in range(a.lastindex):
print a.group(i+1)

differs from that of looping over groups()?
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
474,098
Messages
2,570,625
Members
47,237
Latest member
David123

Latest Threads

Top