我試圖在一個小的ruby腳本中實現這個,並在http://www.rubular.com/上測試它,它在那裏工作完美。不知道爲什麼它沒有在實際的腳本中執行。這個RegEx有什麼問題?
正則表達式: /(motion|links|sound|button|symbol)|(0.\d{8})|(\s\d{1}\s)|(\d{10} \ S)/
這是對文字:
試用ID:1 |試用類型:動作|招? 1 點擊時間:0.87913100 1302969732
試用ID:7 |試用類型:按鈕|招? 0 點擊次數:0.19817800 1302987043
等等,等等
我試圖抓住:只有號碼,經過「試用型」的一個字。因此,對於示例的第一行,我只想要返回「1動作1 0.87913100 1302969732」。我還想在每次試驗中的第一個號碼之前保留空格。
我的短Ruby腳本:
File.open('log.txt', 'r') do |file|
contents = file.readlines.to_s
regex = Regexp.new(/(motion|links|sound|button|symbol)|(0\.\d{8})|(\s\d{1}\s)|(\d{10}\s)/)
matchdata = regex.match(contents).to_a
matchdata.each do |match|
if match != nil
puts match
end
end
end
只輸出兩個 「1」 雖然。嗯...我知道它正在閱讀文件內容,當我嘗試了一個備用簡單正則表達式時,它工作正常。
感謝您給我任何幫助! :)
噢,我並沒有試圖把所有的文字都寫出來 - 我只是想在「試用類型」之後得到數字和單個單詞。本來應該提到這個,對不起! – 2011-04-16 21:29:51
@Jeff,這正是我的觀點......審判後的單詞類型和數字有更多的事情必須匹配。你不能假裝他們不在那裏......'ruby'當然不會。 – 2011-04-16 21:36:57
哦,我當然無法理解正則表達式,然後 - 我不完全確定如何編輯表達式來說明這些,但不包括它們在結果中... – 2011-04-16 22:10:38