有没有任何方法可以将组和正则表达式的*特性结合起来,使其有点像标记器/拆分器。我试过了:
my_str = "foofoofoofoo"
pattern = "(foo)*"
result = re.search(pattern, my_str)
我希望我的团队看起来像
^{pr2}$
但事实并非如此。我很惊讶,因为?组功能确实可以协同工作:
my_str= "Mr foo"
pattern = "(Mr)? foo"
result = re.search(pattern, my_str)
Tags:
问题是你重复你唯一的捕捉组。这意味着您只有一个括号==>一个捕获组,并且每次匹配时该捕获组都会被覆盖。在
参见Repeating a Capturing Group vs. Capturing a Repeated Group关于常规-表达式.info了解更多信息。(但捕获重复的组也不是您想要的)
因此,在正则表达式完成后,捕获组1将包含最后找到的“foo”。在
这将为您提供预期的结果:
结果是一个列表
['foo', 'foo', 'foo', 'foo']
捕获组和*不要使用内置的re模块,而是使用findall。在
pypi中有一个名为regex的库,我相信它支持这种语法,并且有一些其他特性,比如可变长度的回溯。在
相关问题 更多 >
编程相关推荐