【发布时间】:2014-12-11 06:16:33
【问题描述】:
我想从以下示例中获取ASIA。
/scripts/skw.asp?term=&department=ASIA
你知道如何从整个文本中提取部门值吗?
【问题讨论】:
我想从以下示例中获取ASIA。
/scripts/skw.asp?term=&department=ASIA
你知道如何从整个文本中提取部门值吗?
【问题讨论】:
string = "/scripts/skw.asp?term=&department=ASIA&a=b"
puts string[/department=(\w+)/, 1] # => "ASIA"
或者您可以将其解析为查询(我认为这更合适):
require 'cgi'
string = "/scripts/skw.asp?term=&department=ASIA&a=b"
query = string.split('?')[1] # => "term=&department=ASIA&a=b"
parsed_query = CGI::parse(query) # => {"term"=>[""], "department"=>["ASIA"], "a"=>["b"]}
puts parsed_query['department'][0] # => "ASIA"
【讨论】:
&department=Customer%20Service,这将不起作用。
/department=(.+)&?/
str = '/scripts/skw.asp?term=&department=ASIA'
您可以使用捕获组:
str[/\bdepartment=(.+$)/, 1]
#=> "ASIA"
或积极的回顾:
str[/(?<=\bdepartment=).+$/]
#=> "ASIA"
【讨论】:
term 和department 的位置,就像这样@ 987654326@
\W 不会像您认为的那样做。也许你心里有\b。
\b,因为“部门”前面可能有一个非字母字符,如示例中所示。 \W 不完全是,但我认为它已经足够接近了。
\b 是你想要的。