2011-11-15 66 views
1

我正在使用ruby來讀取文件,我需要以某種方式解析每行中的一些數據並將其存儲在數組中。兩個示例從文件「行」是:使用正則表達式獲取較大字符串中的子字符串

64.34.145.197 - - [03/Sep/2006:05:31:37 -0400] "GET /robots.txt HTTP/1.0" 200 56 
64.34.145.197 - - [03/Sep/2006:05:31:37 -0400] "GET /manual/mod/mod_autoindex.html HTTP/1.0" 200 39134 

從這個我需要得到/robots.txt/manual/mod/mod_autoindex.html。使用以下簡單的正則表達式,我已經能夠提取GET /robots.txtGET /manual/mod/mod_autoindex.html,但我似乎無法動搖GET。

arr.push(/GET \S+/.match(line)) 

我試過了一些向前看,但我幾乎RegEx n00b。任何幫助是極大的讚賞。

回答

2

這應該這樣做:

arr.push(/(?<=GET)\S+/.match(line)) 

如果HTTP保證遵循URL,你也可能這樣做是爲了進一步 「框架」 的比賽:

arr.push(/(?<=GET)\S+(?= HTTP)/.match(line)) 

(?<=...)(?=...)被稱爲positive lookarounds ,順便說一句。

+0

只是刷新頁面,說我找到了答案...這就是我發現的。謝謝! – CoryDorning