Существует известный "шаблон", чтобы получить захваченное значение группы или пустую строку, если нет совпадения:
match = re.search('regex', 'text')
if match:
value = match.group(1)
else:
value = ""
или
match = re.search('regex', 'text')
value = match.group(1) if match else ''
Есть ли простой и питонический способ сделать это в одной строке?
Другими словами, могу ли я предоставить значение по умолчанию для группы захвата в случае, если она не найдена?
Например, мне нужно извлечь все буквенно-цифровые символы (и _
) из текста после строки key=
:
>>> import re
>>> PATTERN = re.compile('key=(\w+)')
>>> def find_text(text):
... match = PATTERN.search(text)
... return match.group(1) if match else ''
...
>>> find_text('foo=bar,key=value,beer=pub')
'value'
>>> find_text('no match here')
''
Возможно ли, что find_text()
является однострочным?
Это просто пример, я ищу общий подход.