生成正则表达式

Pau*_*han 7 regex generative-programming regular-language

通常在我们的工作中,我们在捕获匹配操作中使用正则表达式

但是,可以使用正则表达式 - 至少手动 - 来生成与正则表达式匹配的合法句子.当然,一些正则表达式可以匹配无限长的句子,例如表达式.+.

我有一个问题可以通过使用正则表达式句子生成算法来解决.

在伪代码中,它将运行如下:

re = generate("foo(bar|baz)?", max_match = 100);  #Don't give me more than 100 results
assert re == ("foobar", "foobaz", "foo");
Run Code Online (Sandbox Code Playgroud)

什么算法会为我执行此操作?

Tim*_*ker 1

看看Xeger(谷歌代码)

Visual Studio Team System 似乎也有一个反向正则表达式生成器,但它看起来不像是开源的算法。