Это вопрос с участием условное регулярное выражение в Python:Python Условный Regular Expression
Я хотел бы, чтобы соответствовать строке "abc"
с
match(1)="a"
match(2)="b"
match(3)="c"
, но и соответствовать строке " a"
с
match(1)="a"
match(2)=""
match(3)=""
Следующий код ALMOST делает это, проблема в том, что в первом случае match(1)="a"
bu t во втором случае, 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)
Вы правы - это единственные два случая. Работает так, как я надеялся. Ключ имел «?» внутри группы соответствия (\ w?), чтобы либо она соответствовала букве, либо ничего не соответствовала. Благодаря! – Mike
@Mike, добро пожаловать - всегда рад помочь! –