2017-09-26 22 views
0

で正規表現の文字列を含めますそれは要点です。これはそのまま動作しますが、私はstrings_arrayに正規表現から作られた文字列を含めることができるようにする方法を考えています。だから、main_arrayに "string-4385"という文字列があり、の文字列がstring- +一連の整数(数字の接尾辞を手動で追加することなく)で構成されているとします。私はこれを試しました:は、私はそうのような別の配列に探しています複数の文字列で構成された配列を持つ配列

strings_array = ["string1", "string2", "string3", /string-\d+/.to_s] 

これは動作しませんが、それは私が目指しているロジックです。基本的には、このような配列内に正規表現を含む文字列を含める方法はありますか?または、この完全な文字列値を入力する必要なしに、この.any?include?のコンボよりも良い方法がありますか?

ありがとうございました!

+0

あなたは、代わりに 'main_array.include?(x)'は、あなたがチェックできるmain_array [x]は ''かどうか、 '正規表現されてX '、リターンの正規表現としてあなた' string_array'内のすべてのアイテムを扱うことができ'nil'の場合、一致するものはありません。 – Oxfist

+0

Rubyタグがあるので、タイトルに "(ruby)"は必要ありません。 –

答えて

0

これを行うには、Regexp.unionが適しています。これは、複数の正規表現を1つの正規表現に組み合わせてマッチングするのに便利です。

patterns = [/pattern1/, /pattern2/, /string-\d+/] 
regex = Regexp.union(patterns) 
main_array.delete_if{|string| string.match(regex)} 
+0

"Regexp.union"は完璧です!それは必要に応じてスクリプトの残りの部分に正確に組み込まれます。どうもありがとうございます! – lumos

2

あなたはこのような何か行うことができます正規表現に一致する文字列を削除したい場合は、 delete_if keep_if のようなメソッドを使用し、そうすることができます

array = ['string-123', 'test'] 
array.delete_if{|n| n[/string-\d+/] } 

は、配列内の文字列を削除しますあなたの正規表現と一致しないkeep_ifメソッドと同じこと。

希望すると助かります!

関連する問題