Ruby Regular Expressions - проверка начала, середины и конца строки? - PullRequest
1 голос
/ 16 мая 2010

Мне нужно вывести "274.20p" из:

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

Я хотел бы сделать регулярные выражения для:

<td    class="dataRegularUlOn"    >

так что-то вроде:

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

Я использую ruby ​​в Linux.

Thks

Ответы [ 4 ]

1 голос
/ 16 мая 2010

Почему вы хотите написать свой собственный 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"]
0 голосов
/ 16 мая 2010

Попробуйте это регулярное выражение:

/<td[^>]*class="dataRegularUlOn"[^>]*>([^<]*)<\/td>/
0 голосов
/ 16 мая 2010

Вы анализируете HTML-файл? Я думаю, что вы должны использовать XPath, действительно прост в использовании. Для Руби есть Нокогири.

Используя регулярное выражение, я бы сделал так:

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

Это должно сработать. Я не могу попробовать это прямо сейчас.

0 голосов
/ 16 мая 2010

Почему бы не использовать что-то вроде http://github.com/whymirror/hpricot, и тогда вы можете просто использовать xpath к элементу для получения значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...