Это вопрос, связанный с условным регулярным выражением в python:
Я бы хотел сопоставить строку "abc"
с
match(1)="a"
match(2)="b"
match(3)="c"
, но также соответствует строке " a"
с
match(1)="a"
match(2)=""
match(3)=""
Следующий код ALMOST делает это, проблема в том, что в первом случае match(1)="a"
но во втором случае match(4)="a"
(не match(1)
по желанию).
Фактически, если вы перебираете все группы с for g in re.search(myre,teststring2).groups():
, вы получаете 6 групп (а не 3, как ожидалось).
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)
Есть мысли? (обратите внимание, это для Python 2.5)