Один лайнер, который возвращает другую строку, если не было совпадения.
Редактировать: улучшенная версия использует next
функцию, замените "not-found"
чем-то другим, если необходимо:
import re
res = next( (m.group(1) for m in [re.search("AAA(.*?)ZZZ", "gfgfdAAA1234ZZZuijjk" ),] if m), "not-found" )
Мой другой способ сделать это, менее оптимальный, использует регулярное выражение во второй раз, но все еще не нашел более короткий путь:
import re
res = ( ( re.search("AAA(.*?)ZZZ", "gfgfdAAA1234ZZZuijjk") or re.search("()","") ).group(1) )