expressions = re.findall(r"[abcd](\d+)|(ab)(\d+)|(abcd)(\d+)",line)
print(expressions)
Это должно работать. проблема была в: Python, вы не ставите (
в скобках. Если вы подразумеваете круглые скобки буквально в (d+)
, вы должны использовать экранированный парантез \(
и \)
.
Имейте в виду, что если вы поставите скобки вокруг ab
или abcd
, они будут перечислены при ссылке на группировки. Я бы не ставил паратезы, если в этом нет необходимости.
expressions = re.findall(r"[abcd]\(\d+\)|ab\(\d+\)|abcd\(\d+\)",line)
print(expressions)
Если вы хотите просто сопоставить a1236
, ab12
, abcd12342
, тогда используйте
expressions = re.findall(r"[abcd]\d+|ab\d+|abcd\d+",line)
print(expressions)
Однако, если вы хотите захватить определенные части с их повторениями, поместите вокруг них парантезы.