2013-02-25 38 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"