z3 - 如何在 z3py 中连接正则表达式?
问题描述
我想构造一个正则表达式,例如 a* b* c*,z3 中有一个函数 re.++ 可以将 3 个正则表达式连接在一起,所以我可以构造 a* b* c* 如下
(assert (str.in.re "aabbc" (re.++ (re.* (str.to.re "a")) (re.* (str.to.re "b")) (re.* (str.to.re "c")))))
(check-sat)
但是,我在网站的z3py API中找不到这样的连接功能:https ://z3prover.github.io/api/html/namespacez3py.html
所以我的问题是如何使用 z3py 连接多个正则表达式?
解决方案
使用Concat
:
>>> from z3 import *
>>> print(Concat(Star(Re("a")), Star(Re("b")), Star(Re("c"))))
re.++(Star(Re("a")), re.++(Star(Re("b")), Star(Re("c"))))
推荐阅读
- java - 我的 ArrayList 没有返回所有元素
- c++ - 使用匿名结构初始化联合
- python - 在 Python 中创建新的字典键时,使用 `update` 而不是简单的 = 创建它有什么好处?
- node.js - Node.js Sodium 安装失败
- bash - Bash 或 Zsh 中的“别名方法链”
- android - Android 在给定 WebResourceRequest 的情况下进行 http 调用
- javascript - javascript按对象创建动态类
- visual-studio-2017 - 在 EF Core、ASP.NET Core MVC 中实现 Table Per Hierarchy Inheritance 的最佳方法
- html - 孩子的保证金问题
- php - WordPress 自定义帖子类型数组未按预期工作