红宝石基本正则表达式

时间:2013-02-25 14:24:53

标签: ruby regex

你好我正试图从服务器日志中提取一些数据,按照这个标准所有GET s但是在输出中我想从[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 个答案:

答案 0 :(得分:2)

首先提示,请使用rubular.com

简短回答

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

意义:(如果你需要的话)

  1. ^表示字符串开头的匹配GET
  2. ()表示在可恢复对象中捕获该部分的结果
  3. .*意味着捕捉一切,因为这就是你所需要的。
  4. [1]表示从匹配元素列表中获取第二项,0表示匹配的整个字符串。
  5. 如果需要,迭代循环

答案 1 :(得分:0)

您可以使用括号运算符

选择所需的匹配数据
"GET /hello".match(/[a-z0-9]*GET \s*([\/a-zA-Z]+)/)[1]
 => "/hello"