val = "<a href=\"https://mobile.twitter.com\" rel=\"nofollow\">Mobile Web</a>"
在我的測試:
val[/(>.*<)/]
返回:
>Mobile Web<
我想返回文本:
Mobile Web
val = "<a href=\"https://mobile.twitter.com\" rel=\"nofollow\">Mobile Web</a>"
在我的測試:
val[/(>.*<)/]
返回:
>Mobile Web<
我想返回文本:
Mobile Web
先行/ lookbehind wil我工作。
val[/(?<=>)(.*)(?=<)/]
你可以用Nokogiri解析它:
require 'nokogiri'
html = '<a href="https://mobile.twitter.com" rel="nofollow">Mobile Web</a>'
elem = Nokogiri(html)
puts elem.text
這是比接受的答案好得多的答案。正則表達式是解析html的錯誤工具。 – dbenhur 2013-04-23 05:11:26
令人遺憾的是,OP沒有給出一個真實世界的HTML例子;像Nokogiri這樣的解析器的真正優勢並不明顯,也不是使用正則表達式的缺點。我們不知道通過什麼樣的陰謀來提取這條線,但是對於真實世界的使用,使用真正的分析器很容易。 – 2013-04-23 05:55:44
Nokogiri太棒了!在大型應用程序中,性能較差!我更喜歡正則表達式! – 2013-04-23 18:39:44
你可以使用匹配,並與括號中選擇你想要的部分
/>(.*)</.match(val)[1]
我會用一個HTML解析庫就像角度來說,Hpricot或nokogiri的HTML解析,但因爲可能會有很多角落情況與正則表達式,直到它在生產某個地方運行數月和休息之後纔會顯現!
+1 fpr推薦Nokogiri。 -1給出一個正則表達式的答案。 – 2013-04-23 05:52:14
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
法則一,[不使用正則表達式解析HTML或XML(http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained標籤都有效)。雖然它很誘人,但它也非常容易出錯並且很脆弱。相反,使用一個真正的解析器。這很容易,更穩定,更脆弱。 @Blender給了你正確的答案。 – 2013-04-23 05:47:08