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

时间:2016-02-08 17:09:16

标签: 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')的内容(基于正则表达式中的部分) 如果我的模式不同,比如说,

pattern = ^[A-Z]{1,4} [A-Z]{2} [A-Z]$
str = 'ABC FH P'

我最终会得到 ('ABC','FH','P') 似乎我必须拆分正则表达式的组件,这些组件将因模式而不同。

我正在考虑仅使用组件模式对re.search进行单独调用 n ,但我怀疑我总是会找到合适的子字符串,否则它将返回超出我想要的数量。

2 个答案:

答案 0 :(得分:2)

使用捕获群组

>>> pattern = '^([A-Z]{5}) ([0-9]{6})(C|P)([0-9]{1,3})$'
>>> m = re.match(pattern, str)
>>> m.groups()
('ABCDE', '020816', 'C', '110')

答案 1 :(得分:0)

尝试:

>>> 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')

您可以使用群组和match,只需在正确的位置添加()