Regex для многосимвольных строк, встроенных в остальное совпадение?

1

Как я могу сопоставить что-то вроде "AB|CD|EF", а затем "12|34" и получить, например, "AB12" назад? Если строка была "zzAB34zz", я бы получил "AB34", "zzABCD12" и получил "CD12" и т.д.

Теги:
pattern-matching

3 ответа

3
Лучший ответ

Здесь нет необходимости в названных группах:

import re
re.search('(AB|CD|EF)(12|34)', 'zzAB34zz').group()
0
import re ; "".join(re.compile("(AB|CD|EF)(12|34)").search("zAB12z").groups())

выдает:

'AB12'
0

Используйте скобки для записи:

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>...) могут помочь избежать раздражающей индексации.

  • 0
    Или ты мог бы сделать это.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню