2013-02-25 84 views
-2

你好,我試圖從服務器提取由這個標準記錄一些數據的所有GET秒,但在輸出我想從[GET]路徑[方案]唯一路徑紅寶石基本的正則表達式模式

正則表達式來獲得:

line.match(/[a-z0-9]*GET \s*([\/a-zA-Z]+)/) 

fix.rb

... 
GET /edu/languages/google 
GET /edu/languages/google 
GET /baz/img/techtalk 
... 

因此,需要去除部分GET ...有何意見?謝謝

+2

http://www.rubular.com - 我不是創造者,但我覺得它真的很有用! – 2013-02-25 14:29:21

回答

2

首先尖端比賽數據,使用rubular.com

簡短的回答

res = line.match(/^GET(.*)/)[1] 

含義:(如果你需要它)

  1. ^表示在字符串的開頭匹配GET
  2. ()表示捕獲的那部分的結果可恢復的物體
  3. .*意味着捕捉所有的東西,因爲是你需要的。
  4. [1]表示從匹配元素列表中獲取第二項,0表示匹配的整個字符串。如果需要在循環

迭代

+1

請不要「分享」書籍。網上有大量的文檔可以在網上找到,而無需訴諸於此。值得分享的書的作者應該因其辛勤工作而得到回報。你通過「分享」書寫未來的書籍,從而剝奪了我們所有人的激勵和興趣。 – 2013-02-25 15:30:13

+1

我會把它寫成'res = line [/^GET(\ S +)/,1]'。 – 2013-02-25 15:31:58

+0

是的,分享這本書的名字是一回事,而分享這本書是另一回事。如果你發現自己需要一本書的不斷參考,你應該考慮擁有它,這是一個更快樂的學習曲線 – Arindam 2013-02-25 15:44:06

0

您可以選擇您想用括號運算符

"GET /hello".match(/[a-z0-9]*GET \s*([\/a-zA-Z]+)/)[1] 
=> "/hello"