how can I check if group member exist ?
Peter Otten
__peter__ at web.de
Fri Jun 21 05:25:02 EDT 2013
Hans wrote:
> 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":
>>>>print a.group(3)
> Traceback (most recent call last):
> File "<stdin>", line 1, in <module>
> IndexError: no such group
>>>>
>
> 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:
>>> a = re.compile("(.)(.)(.)").search("alpha")
>>> dir(a)
['__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()?
More information about the Python-list
mailing list