1
我在第一次遇到Ruby中的MatchData#captures
方法,想問問有人能爲我解釋一下。 Ruby文檔說:紅寶石捕獲方法和正則表達式
返回捕獲數組;相當於。
但是我目前正在一個長字符串上運行一個正則表達式,它似乎是返回給我的最後一項評估?這有意義嗎?
這是字符串:
431cdb7b1ad8183a1434b6d1a407731fac0ea61b8d720d733fefaa77f063df8e vidcoder [23/May/2012:01:17:16 +0000] 76.78.212.49 - B24DEA4883A9FF95 REST.GET.OBJECT accounts/6/videos/xboxcCFC/video.mp4 "GET /accounts/6/videos/xboxcCFC/video.mp4 HTTP/1.1" 206 - 2 697898511 56 56 "-" "Apple Mac OS X v10.6.8 CoreMedia v1.0.0.10K549" -
這是正則表達式:
line.match(%r{^.*\s+HTTP.*\s+-\s+(\d+)\s+}).captures
它在這種情況下返回2號
確定了它謝謝。似乎我需要更好地理解我的正則表達式,因爲這決定了捕獲方法將返回什麼?我注意到你把(。*)導致3個元素被返回 – BC00
@ BC00事實上:每次用()包圍你的正則表達式的某個部分時,它表明你想捕獲它以備後用。你可以在這裏得到更多的解釋以及Ruby regexp測試:http://www.rubular.com/ – Eureka
真棒謝謝你! – BC00