正規表現の配列と文字列の配列があります。配列のサイズは任意の長さにすることができます(たとえば、100または1000)。2つの異なる正規表現に一致する文字列はありません。どのように実施するかはわかりませんが、そこにあると仮定しましょう。正規表現は、で始まりpre
、オプションのコロン、1つ以上のスペース、特定の文字列、単一のスペース、整数の順に続きます。大文字と小文字は区別されません。
regexes = [/pre: my_string (\d+)/i, /pre: another (\d+)/i]
strings = ["comet", "eclipse", "sunshine", "starlight", "moonlight"]
文字列ごとに、一致する正規表現を確認し、対応する一致を返します。上記のサンプルコードは、私の現在のアプローチを示しています。
strings.each {|string|
regexes.each {|regex|
if regex.match(string)
p regex.match(string)
break
end
}
}
非効率のようです。これを実装するためのより効率的な方法は何ですか?