ich eine Reihe von Wort haben: hello, poison, world, search, echo ...
Und ich habe einige Briefe e, h, o
Jetzt habe ich brauche alle Wörter zu finden, die diese Buchstaben enthält. Wie search, echo
für e, h, o
Regulärer Ausdruck: wenn drei Buchstaben enthalten sind
kann ich diese Art und Weise suchen:
words = %w[hello poison world search echo]
matched = words.select do |w|
%w[e,h,o].all?{ |l| w =~ /#{l}/ }
end
Das Problem ist, dass, wenn Buchstaben o, o, o
sind, oder l, b, l
Diese Suche return true wird für Wörter wie open
oder boil
, aber ich brauche Wörtern suchen das schließt drei o
oder zwei von l
und ein b
UPD:
leters = "abc"
words.select{ |w| w.count(letters) >= 3 }
upd 2
Bad Lösung, Beispiel:
"lllllll".count("lua") #=> 5
Wie viele Wörter Wenn Sie eine gute Leistung über ein? ganzes Wörterbuch, die Lösungen sind unterschiedlich –
Wie groß ist Ihr Text? Und müssen Sie mehrere 3-Buchstaben-Sätze dagegen laufen? –
ungefähr 500-1000 Wörter (es ist Array, acctually). Und ich werde mehrere laufen lassen Sätze (20-30 jedes Mal) – fl00r