你需要躲避支架也按顺序下一个定义图案的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']
更新:
>>> re.findall(r'\(.*?\)\d+|\w+', 'Hello(World)55Example(Text)23Something')
['Hello', '(World)55', 'Example', '(Text)23', 'Something']
现在唯一未知的是你是否也有像''你好输入(你好,世界(S))55Example(文本(这里)更多的文本)23Something''。 –