我知道一點正則表達式,但不會發生變化。從以下html中獲取數字的最佳方法是什麼? (我想有32個返回)。在這個可怕的html頁面中,寬度,行跨度和大小的值都是不同的。任何幫助?紅寶石正則表達式幫助
<td width=14 rowspan=2 align=right><font size=2 face="helvetica">32</font></td>
我知道一點正則表達式,但不會發生變化。從以下html中獲取數字的最佳方法是什麼? (我想有32個返回)。在這個可怕的html頁面中,寬度,行跨度和大小的值都是不同的。任何幫助?紅寶石正則表達式幫助
<td width=14 rowspan=2 align=right><font size=2 face="helvetica">32</font></td>
如何
>(\d+)<
或者,如果你拼命想要避免使用捕獲組都:
(?<=>)\d+(?=<)
這將返回> 32 <但我想我可以只是做string.match(/>(\ d +))match(/ \ d + /) – bunnyBEARZ 2010-03-14 01:57:07
@bun:那麼,你會發現'32'第一個捕獲小組......我編輯了答案,包括一個不需要該小組的例子。 – Joey 2010-03-14 01:59:23
太棒了,非常感謝。 – bunnyBEARZ 2010-03-14 02:05:23
請,自己動手做贊成:
#!/usr/bin/env ruby
require 'nokogiri'
require 'test/unit'
class TestExtraction < Test::Unit::TestCase
def test_that_it_extracts_the_number_correctly
doc = Nokogiri::HTML('<td width=14 rowspan=2 align=right><font size=2 face="helvetica">32</font></td>')
assert_equal [32], (doc/'//td/font').map {|el| el.text.to_i }
end
end
我同意。與使用解析器相比,使用正則表達式處理HTML內容比長期更容易出錯。 – 2010-03-14 07:31:13
最好的方法是使用解析器而不是正則表達式。 :-) – Erik 2010-03-14 01:52:30
@Erik:原則上是的,但對於快速和骯髒的屏幕掃描正則表達式通常是一個可行的工具。 – Joey 2010-03-14 01:55:11
我會使用解析器,但HTML格式太差。 – bunnyBEARZ 2010-03-14 02:02:26