微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

有Perl等同于Python的re.findall / re.finditer正则表达式迭代结果吗?

如何解决有Perl等同于Python的re.findall / re.finditer正则表达式迭代结果吗?

/g在您的比赛中使用修饰符。从perlop手册中:

/g”修饰符指定全局模式匹配- 也就是说,在字符串内尽可能多地匹配。它的行为取决于上下文。在列表上下文中,它返回与正则表达式中的任何捕获括号匹配的子字符串列表。如果没有括号,它将返回所有匹配字符串的列表,就好像整个模式周围都有括号一样。

在标量上下文中,每次执行“m//g”都会找到下一个匹配项,如果匹配则返回true,如果没有其他匹配则返回false。可以使用该pos()功能读取或设置最后一场比赛后的位置;参见“posperlfunc。匹配失败通常会将搜索位置重置为字符串的开头,但是您可以通过添加/c”修饰符(例如“m//gc”)来避免这种情况。修改目标字符串也会重置搜索位置。

解决方法

在Python中,已编译的正则表达式模式具有findall执行以下操作方法

返回字符串中模式的所有非重叠匹配项,作为字符串列表。从左到右扫描字符串,并以找到的顺序返回匹配项。如果模式中存在一个或多个组,则返回一个组列表;否则,返回一个列表。如果模式包含多个组,则这将是一个元组列表。空匹配项将包括在结果中,除非它们碰到另一个匹配项的开头。

在Perl中执行此操作的规范方法是什么?我能想到的一个简单的算法是“在搜索并成功替换空字符串后,执行[suite]”。我希望有更好的方法。:-)

提前致谢!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。