具体而言,是有一个库,给定2(或更多)的正则表达式的情况下,可以知道是否存在一个输入,这两个将匹配?奖励点数,如果它是通过Java或.NET,但命令行方便将罚款,以及

阿斯卡的日志,补充:

这将被馈送至该算法的正则表达式是相当简单的。虽然我认为有几个与向前看符号,它们都是相当简单的文字或字符类具有固定最小和最大长度的组合。

有帮助吗?

解决方案

我发现了一个Python库,让我做什么,我需要做的。

>>> import reCompiler
>>> fsa1 = reCompiler.compileRE('\d\d\d?\d?a')
>>> fsa2 = reCompiler.compileRE('123a')
>>> fsa3 = reCompiler.compileRE('a23a')
>>> print len(FSA.intersection(fsa1, fsa2).finalStates)
1
>>> print len(FSA.intersection(fsa1, fsa3).finalStates)
0

在库称为 pyFSA 。我需要实现一些preparsing把像\ d {2,4}语句插入\ d \ d \ d?\ d?,但比它应该适合我的需要很好地等。感谢您的输入,如果人们发现,实现这一在其他语言中通过各种手段包括他们的库。

其他提示

如果有它不会在时间的有用的量运行。比较正则表达式是一个PSPACE问题

http://en.wikipedia.org/wiki/PSPACE-complete

您可能有一些运气,如果你可以让你的正则表达式的额外限制

如果我理解正确的话,你想知道的2个正则表达式的交集是空集或没有?我相信这是很难的,但我也不会感到惊讶,如果是复杂的正则表达式的长度指数(尽管有些正则表达式将obivously会比其他人更容易)

无论如何,这里有一个Haskell的实现: http://sulzmann.blogspot.com/2008/11/播放与 - 常规expressions.html

和一个序言实施 http://www.let.rug.nl/vannoord/Fsa/

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top