Ruby正则表达式 - 检查行的中间和结尾?

时间:2010-05-16 10:41:41

标签: html ruby

我需要得到“274.20p”:

<td nowrap="nowrap" class="dataRegularUlOn" style="text-align: right;">274.20p</td>

我想在:

上做正则表达式
<td    class="dataRegularUlOn"    >

如下所示:

/<td(.*?)class="dataRegularUlOn"(.*?)>/

我在linux上使用ruby。

THKS

4 个答案:

答案 0 :(得分:1)

为什么你想编写自己的HTML解析器,当时已经有很多功能完备的HTML解析器?

require 'nokogiri'

doc = Nokogiri::HTML('
    <td nowrap="nowrap" class="dataRegularUlOn" style="text-align: right;">
        274.20p
    </td>')

p doc.search('.dataRegularUlOn').map(&:text)
# => ["272.20p"]

答案 1 :(得分:0)

为什么不使用http://github.com/whymirror/hpricot之类的东西,然后你可以使用xpath来检索元素。

答案 2 :(得分:0)

你在解析一个html文件吗?我认为你应该使用XPath,真的很容易使用。对于Ruby,有Nokogiri。

使用regexp,我会这样做:

ruby_sub_string = /.*[\d]+\.[\d]{1,2}p(.*)/.match(my_string)
ruby_sub_string[1]

它应该做的伎俩。我现在不能尝试它。

答案 3 :(得分:0)

试试这个正则表达式:

/<td[^>]*class="dataRegularUlOn"[^>]*>([^<]*)<\/td>/