私のような正規表現からランダムな文字列を生成する方法があるかしら:Regexに基づいてランダムな文字列を生成しますか?
/[a-z0-9]{5}/.to_s
#=> "dsar3"
は私がrandexp
(https://github.com/benburkert/randexp)を見つけたが、私はそれが放棄残って感じるように上記ととにかく基本的な例では動作しないようです。
誰でも?
私のような正規表現からランダムな文字列を生成する方法があるかしら:Regexに基づいてランダムな文字列を生成しますか?
/[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] /'は論理的に何をしていますか? –
正規表現 – pguardiario
と一致する文字のみを選択しているので、 'sample'は重複を許さないので、" qqf01 "は決して起こりません。 – steenslag
@iAmRubuuuこれは本当にランダムではなく、代わりに、パターンによって決定されます。 – squiguy
それはいくつかの基本的な制約が必要でしょうか?つまり、関係する文字の数は0から無限の間の任意の長さになる可能性があるため、 '/.*/ 'と一致するランダムな正規表現を生成する方法はありません。文字の* number *もランダムでなければならないのですか、または無限集合から値をランダムに選択しようとしていますか?あるいは、正規表現が*や+のようなものを許さないという制約を提案していますか?(あなたの例のように) –
また、正規表現に '.to_s'を指定すると、ランダムに一致する文字列が提供されます。これは、そのコードを見た次の開発者にとっては非常に重要な意味を持ちます。 –