在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 ,但我怀疑我总是会找到合适的子字符串,否则它将返回超出我想要的数量。
答案 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
,只需在正确的位置添加(
和)
。