2016-07-26 6 views
0

正規表現のファイルにあるすべての正規表現と値を一致させたいとします。文字列VALUEとファイル内のすべての文字列を一致させるために、次のコードを書きました。文字列の値と正規表現のファイルにある正規表現のリストとの一致

ただし、正規表現のファイルにある正規表現とVALUEを一致させる必要があります。誰でもこのことで私を助けることができますか?

私はこれを試しましたが、私は200以上の正規表現を持つので、すべての正規表現を1つのファイルに入れる必要があります。

String IS_BAD_ID = "false" 
String ClientID = "10.22.shaw" 
if File.open("/Users/jshaw/mapping/addID.txt").lines.any?{ |line| Regexp.new(line) === ClientID} 
      IS_BAD_ID = "true"   
end 

私は常にIS_BAD_IDの値をfalseにしています。

+0

あなたは何を試してみました:?を残す必要があります

確かに、正規表現の使用に関するいくつかのRubyチュートリアルを見てきました。 – 4castle

+0

@ 4castle 編集した投稿 – User24

答えて

0

文字列をRegexp.newという正規表現オブジェクトにコンパイルします。
正規表現とターゲット文字列を===と比較してください。
.linesが導入する改行文字を、.chompで取り除きます。

String IS_BAD_ID = "false" 
String ClientID = "10.22.shaw" 
if File.open("/Users/jshaw/mapping/addID.txt").lines.any?{ |line| Regexp.new(line.chomp) === ClientID} 
      IS_BAD_ID = "true"   
end 
+0

を参照してください.match()はブール値を返しますか? – User24

+0

'Truthy'として評価されるMatchオブジェクトを返します。一致がなければ、.match()はnilを返します。これは 'Falsy'です。 – Blue

+0

私は '==='を使用するように答えを更新しました。これはブール値を返します。これはもっと正しいはずです。 – Blue

関連する問題