Если вы хотите выполнить условное замещение, используйте функцию в качестве параметра replace .
Эта функция принимает параметр match (что было перехвачено), и его результатом является текст, который будет заменен вместо совпадения.
Для ссылки в функции замены на группу захвата с именем test , используйте group('test')
.
Пример программы:
import re
def replTxt(match):
return 'yes' if match.group('test') else 'no'
a = re.compile('(?P<test>.+)')
result = a.sub(replTxt, 'word')
print(result)
Но у меня есть такое замечание:
Нет шансов, что no
когда-либо будет заменен этой программой.Если регулярное выражение не совпадает, функция replTxt
просто не будет вызываться.
Чтобы иметь возможность, что группа test ничего не соответствует, но что-то сопоставлено:
- эта группа захвата должна быть условной (
?
после нее), - , чтобы не совпадать с пустым текстом, регулярное выражение должно содержать что-то большее, например:
(?P<test>[a-z]+)?\d
.