我有这样的字符串

s = 'MR1|L2-S1x'


模式始终是相同的:一个或两个字符,还可以在[|.+:x-]中后接数字和分隔符。可以重复此模式直到6次。

因此,匹配模式很明确。

p = r'([A-Z]+)(\d)?([|.+:x-]+)'


但是如何使其与字符串作为一组分组匹配呢?

更准确地说:现在我明白了

t=re.search(p,s)
t.groups()
('MR', '1', '|')


我想要的是

('MR', '1', '|'),('L', '2', '-'),('S', '1', 'x')

最佳答案

用户“未定义不是函数”(在注释中)是正确的。
使用findall获取所有匹配的组。

Python 2.7.4 (default, Apr  6 2013, 19:54:46) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> s = 'MR1|L2-S1x'
>>> p = r'([A-Z]+)(\d)?([|.+:x-]+)'
>>> import re
>>> t = re.findall(p, s)
>>> t
[('MR', '1', '|'), ('L', '2', '-'), ('S', '1', 'x')]
>>>

关于python - python正则表达式:组组?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24561981/

10-09 20:21