2013-04-07 16 views
6

acaba: Ben randexp (https://github.com/benburkert/randexp) bulunduRegex'e göre rasgele bir dizi oluşturulsun mu? Böyle bir regex rastgele dize oluşturmak için bir yol olup olmadığını

/[a-z0-9]{5}/.to_s 
#=> "dsar3" 

ama ben terkedilmiş oluyor hissettiğim gibi yukarıda ve yine temel bir örnekle işe gibi görünüyor .

Herkes?

+0

@iAmRubuuu Bu gerçekten rasgele değildir ve bunun yerine bir desen ile belirlenir. – squiguy

+0

Bazı temel kısıtlamalara ihtiyaç var, değil mi? Yani, /.*/ 'ile eşleşen rastgele bir regex oluşturmanın bir yolu yoktur, çünkü ilgili karakterlerin sayısı sonsuz bir 0 arasında olabilir. Karakterlerin * sayısı * da rastgele mi, yoksa sonsuz bir kümeden rastgele bir değer seçmeye mi çalışmalıyız? Ya da, normal ifadenin * veya + (örneğinizdeki gibi) gibi şeylere izin veremeyeceği bir kısıtlama mı öneriyorsunuz? –

+0

Ayrıca, bir regex'te '.to_s' varsa rasgele bir eşleme dizesi sağladıysanız, bu kodu gören sonraki geliştirici için oldukça ciddi bir wtf olur. –

cevap

1

yok ama yaklaşık nasıl:

(0..255).map(&:chr).select{|x| x =~ /[a-z0-9]/}.sample(5).join 
#=> "qif0l" 
+0

x = ~/[a-z0-9]/'mantıksal olarak ne yapıyor? –

+0

Sadece regex ile eşleşen chars seçiyor – pguardiario

+0

'sample' çift kopyalarına izin vermiyor, bu nedenle" qqf01 "asla gerçekleşmeyecek. – steenslag

İlgili konular