使用FAdo查看正则表达式的交集是否为空

问题描述 投票:0回答:1

我有兴趣查看两个正则表达式之间是否有任何重叠。我认为最好的方法是将正则表达式转换为不确定的有限自动机,然后查看这些NFA的交集是否为空。

我在这里看到此FAdo Python软件包:https://pypi.org/project/FAdo/

以及文档:https://www.dcc.fc.up.pt/~rvr/FAdo.pdf

这是我的职能:

from FAdo import reex

def no_overlap(a, b):
    n1 = reex.str2regexp(a).toNFA()
    n2 = reex.str2regexp(b).toNFA()
    c = n1.conjunction(n2)
    return _______

assert no_overlap('(a)*', '(b)*')

但是我无法弄清楚在c是否为空的情况下要在空格中加上什么。我很茫然-感谢您的帮助!

python regex fsm formal-languages nfa
1个回答
0
投票

不幸的是,这不能完全回答原始问题,但是我最终使用绿化库解决了我的问题(计算两个正则表达式的交集):https://github.com/qntm/greenery

© www.soinside.com 2019 - 2024. All rights reserved.