Как я могу сопоставить что-то вроде "AB|CD|EF"
, а затем "12|34"
и получить, например, "AB12"
назад? Если строка была "zzAB34zz"
, я бы получил "AB34"
, "zzABCD12"
и получил "CD12"
и т.д.
Здесь нет необходимости в названных группах:
import re
re.search('(AB|CD|EF)(12|34)', 'zzAB34zz').group()
import re ; "".join(re.compile("(AB|CD|EF)(12|34)").search("zAB12z").groups())
выдает:
'AB12'
Используйте скобки для записи:
import re
r = re.compile(r'(?P<stuff>(AB|CD|EF)(12|34))')
r.findall('__ABCD12__EF34__')
#[('CD12', 'CD', '12'), ('EF34', 'EF', '34')]
r.search('__ABCD12__EF34__').group('stuff')
#'CD12'
Именованные круглые скобки (?P<name>...)
могут помочь избежать раздражающей индексации.