不能用正则表达式减去字符串

时间:2013-02-16 15:20:29

标签: ruby regex

我正在使用Ruby,但我有一些问题,使用正则表达式从字符串中减去一些东西。

我有一个像http://mysite.com?test=100这样的字符串,我想删除?test = 100。根据{{​​3}},执行此操作的正则表达式应为\?(.*)

我尝试使用"http://mysite.com?test=100".sub \?(.*),'',但我一直收到以下错误:

syntax error, unexpected ')', expecting $end "http://mysite.com?test=100".sub \?(.*),''

2 个答案:

答案 0 :(得分:3)

您必须在//中接受正则表达式:

1.9.3-p286 :013 > "http://mysite.com?test=100".sub /\?(.*)/, ''
 => "http://mysite.com"

但无论如何,我建议你在这种情况下使用类似的东西:

require 'uri'
uri = URI.parse("http://mysite.com?test=100")
uri.host # => mysite.com
uri.scheme # => http

答案 1 :(得分:3)

您应该使用库来执行此操作,例如Ruby的标准库中的URI

require 'uri'
uri = URI.parse 'http://mysite.com?test=100'
uri.query = nil
uri.to_s  #=> "http://mysite.com"