如何使用正则表达式在Ruby中获取值标记?

时间:2013-04-23 02:12:35

标签: ruby regex

我有标签:

val = "<a href=\"https://mobile.twitter.com\" rel=\"nofollow\">Mobile Web</a>"

在我的测试中:

val[/(>.*<)/]

回报:

>Mobile Web<

我想要返回文字:

Mobile Web

4 个答案:

答案 0 :(得分:7)

您可以使用Nokogiri解析它:

require 'nokogiri'

html = '<a href="https://mobile.twitter.com" rel="nofollow">Mobile Web</a>'
elem = Nokogiri(html)

puts elem.text

答案 1 :(得分:2)

你可以使用匹配并用括号选择你想要的部分

/>(.*)</.match(val)[1]

我会使用像hpricot或nokogiri这样的html解析库进行html解析,因为可能会出现很多带有正则表达式的极端情况,直到它在某个地方运行数月之后才会出现。符!

答案 2 :(得分:0)

前瞻/后视将起作用。

val[/(?<=>)(.*)(?=<)/]

答案 3 :(得分:0)

require 'nokogiri'

html = '<a href="https://mobile.twitter.com" rel="nofollow">Mobile Web</a>'
elem = Nokogiri::HTML::DocumentFragment.parse(html).child

p elem.text #=> Mobile Web