我有兴趣查看两个正则表达式之间是否有任何重叠。我认为最好的方法是将正则表达式转换为不确定的有限自动机,然后查看这些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
是否为空的情况下要在空格中加上什么。我很茫然-感谢您的帮助!
不幸的是,这不能完全回答原始问题,但是我最终使用绿化库解决了我的问题(计算两个正则表达式的交集):https://github.com/qntm/greenery