我不知道是否有产生来自像一个正则表达式随机字符串的方式:基于正则表达式生成随机字符串?
/[a-z0-9]{5}/.to_s
#=> "dsar3"
我发现randexp
(https://github.com/benburkert/randexp),但它似乎不是像上面反正一个基本的例子工作,我觉得它是我遗弃。
有人吗?
我不知道是否有产生来自像一个正则表达式随机字符串的方式:基于正则表达式生成随机字符串?
/[a-z0-9]{5}/.to_s
#=> "dsar3"
我发现randexp
(https://github.com/benburkert/randexp),但它似乎不是像上面反正一个基本的例子工作,我觉得它是我遗弃。
有人吗?
Perl有一个可以做到这一点的CPAN模块。它通过将正则表达式转化为生成语法来工作。这个概念可能适用于Ruby,但是可能会有一些工作。
见http://metacpan.org/pod/Parse::RandGen和http://metacpan.org/pod/Parse::RandGen::Regexp
没有,但怎么样:
(0..255).map(&:chr).select{|x| x =~ /[a-z0-9]/}.sample(5).join
#=> "qif0l"
'x =〜/ [a-z0-9] /'在逻辑上做什么? – 2013-04-07 07:42:29
它只选择匹配正则表达式的字符 – pguardiario 2013-04-07 07:44:00
'sample'不允许重复,所以“qqf01”不会发生。 – steenslag 2013-04-07 10:42:06
@iAmRubuuu这不是真正随机的,是由一个模式,而不是确定的。 – squiguy 2013-04-07 07:20:50
这需要一些基本的约束,对吧?我的意思是,没有办法生成匹配'/.*/'的随机正则表达式,因为涉及的字符数可以是0和无限长之间的任何长度。如果字符的数字*也是随机的,或者我们应该试图从无限集合中随机选择一个值?或者你是否提出了一个限制,其中正则表达式不允许像*或+这样的东西(就像你的例子那样)? – 2013-04-14 23:58:43
另外,如果你在正则表达式中有'.to_s'提供了一个随机匹配的字符串,对于下一个看到该代码的开发者来说,这将是一个非常严重的wtf。 – 2013-04-15 00:00:53