Python re.findall-如何获得主匹配表达式?
表达方式如下:Python re.findall-如何获得主匹配表达式?,python,regex,python-3.x,Python,Regex,Python 3.x,表达方式如下: re.findall("a(.*?)b",'..a12b..a23b..a45b..') 只提供分组匹配项:['12','23','45'] 如何获得a基匹配,即['a12b',a23b',a45b'] 当然,我可以手动输入它们,但是有没有一种更简单的方法,就像其他语言中的匹配[0]一样?只需删除括号即可。这就是返回的内容 >>> re.findall("a.*?b",'..a12b..a23b..a45b..') ['a12b', 'a23b', 'a45b
re.findall("a(.*?)b",'..a12b..a23b..a45b..')
只提供分组匹配项:['12','23','45']
如何获得a基匹配,即['a12b',a23b',a45b']
当然,我可以手动输入它们,但是有没有一种更简单的方法,就像其他语言中的
匹配[0]
一样?只需删除括号即可。这就是返回的内容
>>> re.findall("a.*?b",'..a12b..a23b..a45b..')
['a12b', 'a23b', 'a45b']
添加另一对用于
>>> re.findall("(a(.*?)b)",'..a12b..a23b..a45b..')
[('a12b', '12'), ('a23b', '23'), ('a45b', '45')]
>>> zip(*_)
[('a12b', 'a23b', 'a45b'), ('12', '23', '45')]
注意(uu在解释器中获取最后输出的值)所述
如果模式中存在一个或多个组,则返回组列表
所以只要删除()
,它就可以返回整个模式
re.findall("a.*?b",'..a12b..a23b..a45b..')
如果必须使用组,请使用非捕获组:
re.findall("a(?:.*?)b",'..a12b..a23b..a45b..')
你是说除了改变捕获组之外?还是添加一个捕获组?或者在这种情况下,只需执行
['a'+match+'b'匹配中的匹配]
?谢谢。这给了我一个群体筑巢的想法,而且很有效re.findall(“(a(.*b)”,“…a12b..a23b..a45b..”
达到了我想要的效果。你在zip()
方法上击败了我,所以我刚刚删除了我的答案:)。full_match,internal_match=zip(*re.findall('a(.*b'),string))