python中的正则表达式操作
我到regex才2天大 我有一个小问题 当我使用下面的正则表达式语句时python中的正则表达式操作,python,regex,Python,Regex,我到regex才2天大 我有一个小问题 当我使用下面的正则表达式语句时 re.findall('([ad])[\-.\s+]([be])[\-.\s+]([cf])*', 'a-b-c d-e-f') 我收到一个输出 [('a', 'b', 'c'), ('d', 'e', 'f')] 然而,我想要的输出是 ['a-b-c', 'd-e-f'] 我试过?、$和其他表达方式,但还没有成功 请让我知道,如果表达可以塑造一点,以获得渴望的输出 谢谢string.split有什么问题吗 或 使用r
re.findall('([ad])[\-.\s+]([be])[\-.\s+]([cf])*', 'a-b-c d-e-f')
我收到一个输出
[('a', 'b', 'c'), ('d', 'e', 'f')]
然而,我想要的输出是
['a-b-c', 'd-e-f']
我试过?、$和其他表达方式,但还没有成功
请让我知道,如果表达可以塑造一点,以获得渴望的输出
谢谢string.split有什么问题吗
或
使用re.finditer。这和a-b.c不匹配
string.split怎么了
或
使用re.finditer。这和a-b.c不匹配
捕获整个字符串并对其余部分使用非捕获组。findall返回所有捕获的组(如果存在)
输出:['a-b-c','d-e-f']
捕获整个字符串并对其余部分使用非捕获组。findall返回所有捕获的组(如果存在)
输出:['a-b-c','d-e-f']您的所有信件周围都有捕获组。如果您使用单个捕获组,那么您将得到您想要的。此外,您应该去掉尾随“*”,因为它匹配空白字符串:
>>> re.findall('([ad][\-.\s+][be][\-.\s+][cf])', 'a-b-c d-e-f')
['a-b-c', 'd-e-f']
你的所有信件周围都有捕捉组。如果您使用单个捕获组,那么您将得到您想要的。此外,您应该去掉尾随“*”,因为它匹配空白字符串:
>>> re.findall('([ad][\-.\s+][be][\-.\s+][cf])', 'a-b-c d-e-f')
['a-b-c', 'd-e-f']
>>> l = []
>>> for i in re.finditer(r'\b[ad]([-.\s+])[be]\1[cf]\b', 'a-b-c d-e-f'):
l.append(i.group())
>>> l
['a-b-c', 'd-e-f']
print re.findall('((?:[ad])[\-.\s+](?:[be])[\-.\s+](?:[cf])*)', 'a-b-c d-e-f')
>>> re.findall('([ad][\-.\s+][be][\-.\s+][cf])', 'a-b-c d-e-f')
['a-b-c', 'd-e-f']