Z3 Java-API:是否有匹配正则表达式的函数?

时间:2019-04-19 22:53:11

标签: z3

使用Z3 Java-API将字符串与正则表达式进行比较时遇到问题。

对于某些目标正则表达式:

"^[a-zA-Z]"

当我尝试将字符串与正则表达式匹配时,它仍被识别为字符串。例如:

SeqExpr c1 = ctx.mkString("^[a-zA-Z]");
ReExpr c2 = ctx.mkToRe(ctx.mkString("abc"));

s.add(ctx.mkInRe(c1, c2));
s.check();

System.out.println("c1 = " + c1);
System.out.println("mkInRe = " + ctx.mkInRe(c1, c2));
System.out.println(s.check());

结果是:

c1 = "^[a-zA-Z]"
mkInRe = (str.in.re "^[a-zA-Z]" (str.to.re "abc"))
UNSATISFIABLE

整个“ ^ [a-zA-Z]”部分被识别为字符串,而不是正则表达式。

我发现Defining constraints in Z3 using Boolean operators,这个问题是高度相关的,可以在Z3 Java中完成与正则表达式类似的事情吗?

谢谢!

0 个答案:

没有答案