在Ruby中查找并提取变量子字符串

时间:2015-07-22 19:40:12

标签: ruby

我有一个字符串:

a = 'foobarbizzbazz;adurl=http://google.com" foobarbizzbazz'

如何在;adurl="之间提取子字符串?此子字符串将分配给URL对象。字符串和内部URL每次都有所不同,因此我需要提取字符串的未知部分。

我无法找到使用begin_withend_withcontains获取所需输出的方法。

2 个答案:

答案 0 :(得分:2)

这会找到它:

a = 'foobarbizzbazz;adurl=http://google.com" foobarbizzbazz'
a[/adurl=([^"]+)"/, 1] # => "http://google.com"

使用String's [] method搜索字符串。 ,1告诉它返回第一个捕获组。

正则表达式中的

[^"]+创建了一个" character class"并且意味着"一个或多个字符 NOT "",所以实际上它发现了" adurl =" ,捕获所有字符直到第一个双引号,并返回它们。

创建URI对象非常简单:

require 'uri'

url = 'foobarbizzbazz;adurl=http://google.com" foobarbizzbazz'
uri = URI.parse(url[/adurl=([^"]+)"/, 1]) # => #<URI::HTTP http://google.com>

此时,您可以利用URI的方法来处理您心灵内容的网址。

答案 1 :(得分:-1)

尝试正则表达式:

regexp = /;adurl=(.*)\\/
regexp.match(a)[1] # --> http://google.com

在此处测试http://rubular.com/