C#生成与正则表达式匹配的字符串的代码
本文关键字:字符串 代码 正则表达式 | 更新日期: 2023-09-27 18:21:21
我使用正则表达式来验证用户输入。现在我可以配置regex,这样可以帮助用户查看如何格式化特定输入的示例。
是否可以生成一些与任意正则表达式匹配的字符串?是否有可用的实现?
更新:由于许可证的原因,我不能使用REX。还有其他可能吗?
尝试使用此应用程序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-似乎有几个例子。但这忽略了这样一个事实,即要测试正则表达式是否正确,您必须已经编写了测试数据。因此,您应该已经有了字符串。]