Вы должны избежать скобки, а также определить шаблон рядом с bracktes в-целях соответствуют одной или нескольким цифрам. [A-Z]
не соответствует символам цифр, он соответствует только прописным буквам. (
, )
- специальные метасимволы в регулярном выражении, которые представляют начало (
и конец )
группы захвата.
matchs = re.findall(r'\([^()]*\)\d+', 'Hello(World)55Example(Text)23Something')
[^()]*
инвертированный класс символ, который соответствует любому символу, но не (
или )
, ноль или более раз. .*?
Нежелательная форма, которая останавливается, если находит совпадение.
Пример:
>>> import re
>>> re.findall(r'\([^()]*\)\d+', 'Hello(World)55Example(Text)23Something')
['(World)55', '(Text)23']
>>> re.findall(r'\(.*?\)\d+', 'Hello(World)55Example(Text)23Something')
['(World)55', '(Text)23']
Update:
>>> re.findall(r'\(.*?\)\d+|\w+', 'Hello(World)55Example(Text)23Something')
['Hello', '(World)55', 'Example', '(Text)23', 'Something']
только неизвестно, что в настоящее время, является ли у вас также есть вход как ' 'Hello (Hello, World (s)) 55Example (Text (и здесь) более текст) 23Something''. –