在Ruby中提取字符串的一部分
我知道这是一个简单的问题,但我想用rails提取字符串的一部分。 我会像Java一样,通过知道字符串的开头和结尾字符并将其提取出来,但我想用ruby的方式来实现这一点,这就是为什么我需要您的帮助 我的字符串是:在Ruby中提取字符串的一部分,ruby,string,parsing,string-parsing,Ruby,String,Parsing,String Parsing,我知道这是一个简单的问题,但我想用rails提取字符串的一部分。 我会像Java一样,通过知道字符串的开头和结尾字符并将其提取出来,但我想用ruby的方式来实现这一点,这就是为什么我需要您的帮助 我的字符串是: <a href="javascript:launchRemote('99999','C')">STACK OVER AND FLOW </a> 我想要引号=>99999和链接=>堆栈和流之间的数值 我应该如何在ruby中解析这个字符串
<a href="javascript:launchRemote('99999','C')">STACK OVER AND FLOW </a>
我想要引号=>99999
和链接=>堆栈和流之间的数值
我应该如何在ruby中解析这个字符串
谢谢。如果您的字符串中只有一个链接,则此操作应该有效
str = %{<a href="javascript:launchRemote('99999','C')">STACK OVER AND FLOW </a>}
num = str.match(/href=".*?'(\d*)'.*?/)[1].to_i
name = str.match(/>(.*?)</)[1].strip
str=%{}
num=str.match(/href=“.*?”(\d*)”.*?/)[1]。到
name=str.match(/>(.*?)如果字符串中只有一个链接,则应该可以使用此选项
str = %{<a href="javascript:launchRemote('99999','C')">STACK OVER AND FLOW </a>}
num = str.match(/href=".*?'(\d*)'.*?/)[1].to_i
name = str.match(/>(.*?)</)[1].strip
str=%{}
num=str.match(/href=“.*?”(\d*)”.*?/)[1]。到
name=str.match(/>(.*)如果需要解析html:
>需要“nokogiri”
>str=%q[]
>doc=Nokogiri.parse(str)
>link=doc.at('a')
>link.text
=>“堆叠并流动”
>链接['href'][/(\d+/,1]
=> "99999"
如果需要解析html:
>需要“nokogiri”
>str=%q[]
>doc=Nokogiri.parse(str)
>link=doc.at('a')
>link.text
=>“堆叠并流动”
>链接['href'][/(\d+/,1]
=> "99999"
同时获得这两种功能的方法:
str = "<a href=\"javascript:launchRemote('99999','C')\">STACK OVER AND FLOW </a>"
num, name = str.scan(/launchRemote\('(\d+)'[^>]+>\s*(.*?)\s*</).first
# => ["99999", "STACK OVER AND FLOW"]
str=“”
num,name=str.scan(/launchRemote\('(\d+)'[^>]+>\s*(.*?)\s*[“99999”,“叠加并流动”]
一次获得这两种功能的方法:
str = "<a href=\"javascript:launchRemote('99999','C')\">STACK OVER AND FLOW </a>"
num, name = str.scan(/launchRemote\('(\d+)'[^>]+>\s*(.*?)\s*</).first
# => ["99999", "STACK OVER AND FLOW"]
str=“”
num,name=str.scan(/launchRemote\('(\d+)'[^>]+>\s*(.*?)\s*[“99999”,“叠加并流动”]
num返回nil://对于名称,我应该如何排除>和和doc.s搜索('a')。首先使用doc.at('a')
。而不是link.attribute('href')。value
使用link['href']
。而不是href.scan(/”(\d+)/)。展平
使用href[/(\d+),1]
。我同意@the Tin Man,但只是link['href'[\d+/]
非常感谢您的回答。要了解更多信息,请您解释一下[/(\d+/,1]是如何工作的?/(\d+)/
是一个匹配任意数字序列的正则表达式。在链接['href']
上使用[/(\d+)/
(字符串),返回字符串中与使用Nokogiri的regex.+1匹配的部分,但是,不要使用doc.search('a')。首先使用doc.at('a')
。而不要使用link.attribute('href')。value
使用link['href']
。不要使用href.scan(/'(\d+)/)。展平
。我同意@the Tin Man,但是非常感谢你的回答。为了了解更多,你能解释一下[/(\d+/,1]是如何工作的吗?/(\d+)/
是一个正则表达式,它匹配任何数字序列。在链接['href']
上使用[/(\d+/]
(字符串),返回字符串中与该正则表达式匹配的部分。