检查两个 Python 正则表达式模式是否等效

2023-11-23

我想写一个正则表达式re.VERBOSE模式,但我不相信我会毫无错误地添加详细部分。

我记得,理论上,两个正则表达式的等价性(至少没有反向引用)可以通过生成它们的自动机并尝试找到图双射来找到。但我看不到用于比较正则表达式的实例方法。

有没有办法生成正则表达式的自动机或直接比较它们,最好与标准库进行比较?

(我已经决定对我的问题采取不同的解决方案,但这仍然是我感兴趣的。)


您可以使用未记录的re.DEBUG特征:

>>> r1 = re.compile("foo[bar]baz", re.DEBUG)
literal 102
literal 111
literal 111
in
  literal 98
  literal 97
  literal 114
literal 98
literal 97
literal 122
>>> r2 = re.compile("""foo   # foo!
...                    [bar] # b or a or r!
...                    baz   # baz!""", re.VERBOSE|re.DEBUG)
literal 102
literal 111
literal 111
in
  literal 98
  literal 97
  literal 114
literal 98
literal 97
literal 122

如果输出相同,r1 and r2也相同。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

检查两个 Python 正则表达式模式是否等效 的相关文章

随机推荐

  • 通过 API 调用设置表单的初始值

    在我的 React 游戏中 我使用名为 Formik 的 React 库作为表单 在其中 您可以像这样设置表单的初始值
  • 拒绝直接访问 S3 上的文件

    我正在构建一个具有以下行为的 django s3 应用程序 用户登录 用户上传文档 gt 文档转到 S3 最终在数据库中具有 UID 名称和别名 用户可以下载该文档 我正在寻找一种方法来拒绝其他用户 或者更糟糕的是 未登录 查询和访问文件
  • Bash - 如果 apt-get/dpkg 正在运行,如何检查软件包是否可以安装?

    在 bash 脚本中我想安装一个包 在明智地这样做之前 我需要检查是否没有其他实例apt get or dpkg已经在工作了 如果是这样的话 那么apt get会失败 因为它已经锁定了 检查是否足够 var lib dpkg lock an
  • Gradle processResources - 文件包含 $ 字符

    你怎样才能执行gradle processResources在包含的文件上 字符而不转义 在文件中 我有一些静态 html 文件位于 resources static文件夹建议Spring Boot 参考文档 但是 当我尝试执行时gradl
  • 如何在log4net中为多行日志条目添加缩进?

    我知道这个问题我同意这个答案 但是我可以使用 log4net 执行以下操作吗 而不是 2013 04 09 12 54 47 093 INFO Main Line 1 Line 1 Line 1 Line 2 Line 2 Line 2 L
  • 缩放后的 QPixmap 看起来很糟糕

    我有以下小部件 pixmap QtGui QPixmap r pics cdaudio png scaled 100 100 图像从 256x256 缩小 它看起来相当不稳定 如何在 Qt 内平滑地扩展它 Use the transform
  • 当 mysql_query 返回 false 时

    除了编写错误的查询并且没有访问表的权限之外 当mysql query返回假 还有其他案例吗 请参阅参考指南 对于 SELECT SHOW DESCRIBE EXPLAIN 等返回的语句 结果集 mysql query 成功时返回资源 否则返
  • 我的 App Engine 应用程序不会自动创建默认存储桶

    我的应用程序引擎应用程序不会自动创建默认存储桶我不明白这是为什么 我的其他应用程序工作正常 但是当我在新应用程序中运行相同的代码时 我正在处理它 但它不会创建 Google 云存储桶 有人有主意吗 已弃用的方法 转到您的 App Engin
  • 将整数列表传递给存储过程

    这是我的存储过程 ALTER PROCEDURE dbo Dan numbers varchar 10 AS BEGIN SET NOCOUNT ON select numbers numbers END 在SSMS中 我可以像这样成功执行
  • 单击浏览器后退按钮时如何调用事件

    单击浏览器后退按钮时如何调用 jquery 事件 我在 asp net mvc 中使用单页应用程序 我想在用户按下浏览器的后退按钮时显示一个确认框以离开屏幕 我如何在浏览器后退按钮上调用 jquery 函数 请帮忙 我已经搜索并找到了推送状
  • “ProductList”对象没有属性“object_list”

    In my ProductList类 当我尝试打电话时get context data在另一种方法中 我收到错误 ProductList object has no attribute object list def get context
  • Google Analytics 有没有办法像 Mixpanel 一样跟踪多个事件参数?

    Given trackEvent category action opt label opt value opt noninteraction 我尝试使用 opt label 但它似乎只是一个字符串 并且不接受像 Mixpanel 那样的不
  • Python:排序函数在存在 nan 时中断

    sorted 2 float nan 1 回报 2 nan 1 至少在 Activestate Python 3 1 实现上是这样 我明白nan是一个奇怪的对象 所以如果它出现在排序结果中的随机位置我不会感到惊讶 但它也搞乱了容器中非 na
  • 转义大括号位于车把中的表达式旁边

    无法理解如何转义位于表达式旁边的 或 符号Handbars Java 模板引擎 我正在使用车把模板生成纯文本 因此我无法按照建议使用大括号的 HTML ASCII 代码there 我需要这样的表达 variable name 待解决 var
  • 使用 ACTION_IMAGE_CAPTURE 以较低分辨率打开 Android 相机

    我正在使用这样的意图打开 Android 相机 Intent cameraIntent new Intent android provider MediaStore ACTION IMAGE CAPTURE cameraIntent put
  • GWT 2.7 + GAE 应用程序在部署时查找代码服务器

    为什么 appengine 尝试使用超级开发模式 每次我将 GWT 应用程序部署到 appengine 并尝试访问它时 我都会看到白色的加载屏幕 然后大约 20 30 秒后我会收到以下消息 我使用 Maven 与gwt maven 插件 a
  • hibernate如何从现有数据库视图中检索数据?

    我是冬眠新手 我的问题是我有一个 Oracle 数据库 我在数据库中有一个视图 现在我想使用 hibernate 来检索该视图中的数据 有没有可能的解决方案 下面的代码片段可以解决您的问题 该代码片段是从教程中提取的 将 Hibernate
  • 为什么 Object.create(null) 的 __proto__ 未定义?

    在阅读 Javascript 原型时 我遇到了这种我无法解释的行为 我正在 chrome 的控制台 V8 中对此进行测试 var fruit taste good var banana Object create fruit console
  • 如何避免 Java 游戏中的垃圾收集延迟? (最佳实践)[关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我正在为 Android 平台调整 Java 交互游戏的性能 有时 垃圾收集的绘图和交互会出现问题 通常它不到十分之一秒 但有时在非常慢的设备上可能会长达 200 毫秒 我正在使
  • 检查两个 Python 正则表达式模式是否等效

    我想写一个正则表达式re VERBOSE模式 但我不相信我会毫无错误地添加详细部分 我记得 理论上 两个正则表达式的等价性 至少没有反向引用 可以通过生成它们的自动机并尝试找到图双射来找到 但我看不到用于比较正则表达式的实例方法 有没有办法