Python中是否有方法创建正则表达式中匹配的组件的元组?

Python中是否有方法创建正则表达式中匹配的组件的元组?,python,regex,Python,Regex,Python中是否有方法创建正则表达式中匹配的组件的元组? 例如,这就是我正在尝试做的 import re pattern = '^[A-Z]{5} [0-9]{6}(C|P)[0-9]{1,3}$' str = 'ABCDE 020816C110' m = re.match(pattern,str) print m.group() ABCDE 020816C110 我想做一些看起来像('ABCDE','020816','C','110')(基于正则表达式中的部分) 如果我的模式不同,比如说

Python中是否有方法创建正则表达式中匹配的组件的元组? 例如,这就是我正在尝试做的

import re
pattern = '^[A-Z]{5} [0-9]{6}(C|P)[0-9]{1,3}$'
str = 'ABCDE 020816C110' 
m = re.match(pattern,str)
print m.group()
ABCDE 020816C110
我想做一些看起来像
('ABCDE','020816','C','110')
(基于正则表达式中的部分) 如果我的模式不同,比如说

pattern = ^[A-Z]{1,4} [A-Z]{2} [A-Z]$
str = 'ABC FH P'
我最终会得到
('ABC','FH','p')
似乎我必须对正则表达式的组件进行拆分,这些组件将因模式不同而有所不同

我正在考虑只使用组件模式对
re.search
进行n次单独调用,但我怀疑我是否总能找到合适的子字符串,或者它会返回比我想要的更多的子字符串。

使用捕获组:

尝试:


您可以使用组和
匹配
,为此,您只需在正确的位置添加

使用re.findall,它将为您提供一个列表,如果需要,您可以非常轻松地将其转换为元组。使用
re.findall
是不需要的,并且对两侧锚定模式没有意义。
>>> pattern = '^([A-Z]{5}) ([0-9]{6})(C|P)([0-9]{1,3})$'
>>> m = re.match(pattern, str)
>>> m.groups()
('ABCDE', '020816', 'C', '110')
>>> import re
>>> pattern = '^([A-Z]{5}) ([0-9]{6})(C|P)([0-9]{1,3})$'
>>> s =  'ABCDE 020816C110'
>>> m = re.match(pattern, s)
>>> m.groups()
('ABCDE', '020816', 'C', '110')