C#生成与正则表达式匹配的字符串的代码

本文关键字:字符串 代码 正则表达式 | 更新日期: 2023-09-27 18:21:21

我使用正则表达式来验证用户输入。现在我可以配置regex,这样可以帮助用户查看如何格式化特定输入的示例。

是否可以生成一些与任意正则表达式匹配的字符串?是否有可用的实现?

更新:由于许可证的原因,我不能使用REX。还有其他可能吗?

C#生成与正则表达式匹配的字符串的代码

尝试使用此应用程序Rex可以做到这一点:)

http://research.microsoft.com/en-us/projects/rex/

对于java来说https://code.google.com/p/xeger/

因此有许多正则表达式匹配生成器:)

这个:https://github.com/moodmosaic/Fare

它是c#中的xeger包装器

一些解决方案:

(1) 如果regex是由您(而不是用户)编写的,并且很少更改,那么为什么要以编程方式创建任何内容呢?你可以手工创建几个不错的例子。

(2) 使用现成的解决方案。(见其他答案)

(3) 拒绝采样,解决所有随机生成问题的大锤:创建一个随机字符串并检查它是否与正则表达式匹配。如果没有,请重试。如果正则表达式非常具体,那么这个解决方案的性能就很糟糕。

(4) 实现一个解析器,将正则表达式转换为字符串构造树,该树由以下节点组成。每个节点都有一个遵循特定规则的CreateRandomString方法。创建一个随机字符串意味着为根节点调用该方法。

连接:遍历所有子子树并按顺序连接结果。

随机选择:选择一个随机子树并遍历它。返回结果。

乘法:在a和b之间创建一个随机数n。遍历子树n次并连接结果。

leaf:返回一个常量字符串。

创建解析器是一个棘手的部分:),尤其是嵌套结构。(我已经为类似正则表达式的语法编写了一个。)

根据注释中的指定,Rex工具将完成任务-

使用Rex创建与您的模式匹配的字符串:

按如下方式运行rex.exe

rex.exe "your_regex_pattern_here" /k:your_required_examples_num_here

有关此的更多信息:Rex Guide

几乎可以肯定不是,不是。

在您所查看的上下文中,正则表达式通常用于检查字符串是否与给定格式匹配。如果你知道你的格式应该足够好,以至于你正在为它编写一个正则表达式,那么你就没有理由不能足够容易地生成自己的测试数据。

[Edit-似乎有几个例子。但这忽略了这样一个事实,即要测试正则表达式是否正确,您必须已经编写了测试数据。因此,您应该已经有了字符串。]