寻找可将有限正则表达式转换为所有匹配文本数组的Python包
推荐第三方包
首选:exrex
这是目前最成熟的正则匹配字符串生成工具,支持绝大多数正则语法(包括分组、多选分支、字符集、量词、嵌套结构等),完全覆盖你当前的需求,也能应对后续更复杂的正则场景。
安装命令:
pip install exrex
针对你的场景使用示例:
import exrex # 直接传入目标正则即可 regex = r'I (like|hate) (pizza|ice cream)!' # 输出所有匹配结果 for res in exrex.generate(regex): print(res) # 也可以直接统计匹配结果总数 print("总匹配数:", exrex.count(regex))
运行后会直接输出你需要的4条结果。
轻量替代:sre-yield
如果你需要更轻量的实现,也可以选择sre-yield,性能表现优秀,同样支持各类常见正则语法:
安装命令:
pip install sre-yield
使用示例:
import sre_yield regex = r'I (like|hate) (pizza|ice cream)!' for res in sre_yield.AllStrings(regex): print(res)
你自己实现的逻辑目前仅支持平级的简单多选分组,遇到嵌套分组、字符集、量词这类正则语法就会失效,以上两个成熟的第三方包都完整兼容了这些场景,无需额外开发适配。
内容的提问来源于stack exchange,提问作者aschultz
相关产品推荐
相关产品推荐

