2016-07-26 62 views
0

我想將值與正則表達式文件中存在的所有正則表達式匹配。我寫了下面的代碼來匹配字符串VALUE與文件中存在的所有字符串。將字符串值與正則表達式文件中存在的正則表達式列表匹配

if File.open("/Users/jshaw/mapping/addID.txt").lines.any?{|line| line.include?(VALUE)} 

    var badID = "true" 

end' 

但是,我需要將VALUE與正則表達式中存在的正則表達式匹配。任何人都可以幫助我嗎?

我試過這個,但我需要把所有正則表達式放在一個文件中,因爲我有超過200個正則表達式。

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