This is a question involving a conditional regular expression in python:
I'd like to match the string "abc"
with
match(1)="a"
match(2)="b"
match(3)="c"
but also match the string " a"
with
match(1)="a"
match(2)=""
match(3)=""
The following code ALMOST does this, the problem is that in the first case match(1)="a"
but in the second case, match(4)="a"
(not match(1)
as desired).
In fact, if you iterate through all the groups with for g in re.search(myre,teststring2).groups():
, you get 6 groups (not 3 as was expected).
import re
import sys
teststring1 = "abc"
teststring2 = " a"
myre = '^(?=(\w)(\w)(\w))|(?=\s{2}(\w)()())'
if re.search(myre,teststring1):
print re.search(myre,teststring1).group(1)
if re.search(myre,teststring2):
print re.search(myre,teststring2).group(1)
Any thoughts? (note this is for Python 2.5)