我有一个字符串:
a = 'foobarbizzbazz;adurl=http://google.com" foobarbizzbazz'
如何在;adurl=
和"
之间提取子字符串?此子字符串将分配给URL对象。字符串和内部URL每次都有所不同,因此我需要提取字符串的未知部分。
我无法找到使用begin_with
,end_with
或contains
获取所需输出的方法。
答案 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/