你需要躲避支架也按順序下一個定義圖案的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''。 –