我不知道是否有產生來自像一個正則表達式隨機字符串的方式:基於正則表達式生成隨機字符串?
/[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