【问题标题】:Reverse regular expressions to generate data反向正则表达式生成数据
【发布时间】:2010-05-25 13:49:38
【问题描述】:

在其中一个 StackOverflow 播客中(人们正在讨论用于测试 DB 的数据生成——#11#12),Jeff 提到了类似“反向正则表达式”之类的东西,它们正是用于此目的: 给定一个正则表达式,生成一个最终匹配所述正则表达式的字符串。

整个概念的正确术语是什么?这是一个众所周知的概念吗?

【问题讨论】:

标签: regex algorithm


【解决方案1】:

Perl 模块 String::Random(在 CPAN 中)执行此操作。获取正则表达式的子集,并随机遍历它。

【讨论】:

  • String::Random 一定会在解决方案集中生成所有可能的值吗?我有一个类似的问题,但我需要所有可能的值。我愿意严格限制我的语言。
【解决方案2】:

摘要:Recursive transition network(以postmodernism generator 为例)

您的“反向正则表达式”是一种专长。


关于术语:正则表达式语法的一种形式,它描述了属于特定正则的所有单词语言(即所有输入匹配表达式)。

因此有人可以将您的问题称为:“如何创建与给定正则表达式匹配的随机词”“如何获得属于指定常规语言的随机词”。

【讨论】:

  • 上下文无关文法 (CFG) 是不规则的,这可以使用抽水引理来证明。但是,仍然可以应用 RTN 的想法,改用非确定性有限状态自动机 (NFA)。
  • @Thomas:是的,但是普通的是上下文无关的,所以可以应用相同的概念(只不过是一种专业化)。
【解决方案3】:

绝对可以从正则表达式生成数据。一些开源项目正在这方面的开发中。

关于how to generate random password from regex 的教程将向您解释它是如何完成的。教程中使用了xeger(正则表达式的反向,一个开源项目)。请完成教程以了解更多信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-28
    • 2017-03-28
    • 2020-07-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多