文字列内のスペースのない単語をスキャンする
概要
Rubyで文字列から単語を抽出しようとしています。たとえば、これがあるとします。
「12jdfndjseven456sfjithree」
[“seven”, “three”] の配列を取得したい。私が探しているのは 1 ~ 9 番目の単語だけなので、どんな単語でも構いません。これらの特定の単語をスキャンして、出現した場合にマッピングする方法はありますか?
また、文字列内に表示される順序にしたいので、単に if/include を実行するのはやめてください。これにより、スキャンした順序でそれらが配置されると思います(私が間違っていない限り?)。
おそらく正規表現スキャンを実行できると思いますが、私は正規表現が苦手なので、数値ではなく単語であるため、どこから始めればよいかわかりません。
解決策
ターゲット単語の配列がある場合は、単語の配列をパイプ | で結合できます。
そして、この正規表現を使用してスキャンした後、
string = "12jdfndjseven456sfjithree"
words = %w[one two three four five six seven eight nine]
pattern = Regexp.union(words) # or %r{#{words.join('|')}} or /#{words.join('|')}/
# => /one|two|three|four|five|six|seven|eight|nine/
string.scan(pattern)
# => ["seven", "three"]