Ruby正则表达式的匹配组未被返回

时间:2015-09-29 19:29:06

标签: ruby regex

我正在使用:

<ul class="ont-bd-phone">[\s\S]+<li>[\s\S]+T:&nbsp;([^$]+?)[\s\S]+<\/li>[\s\S]+<\/ul>

获取020 3514 0019
 <ul class="ont-bd-phone">


          <li>



                T:&nbsp;020 3514 0019


          </li>



    </ul>

但是返回的唯一匹配组是'0'而不是整数。我不确定如何在使用$之外捕获行尾。作为新手,我如何处理具有大量空格/换行符的HTML。

我正在使用Rubular来检查我的工作。

2 个答案:

答案 0 :(得分:6)

在开始抛出正则表达式之前,一定要使用可以读取HTML / XML的东西。使用像Nokogiri这样的东西来查找这些列表项中的内容是微不足道的。在那之后,正则表达式(如果你真的需要它)很容易。

要获得该文本,这样的内容将起作用:

require 'nokogiri'

page = # however you are getting the page content...
doc = Nokogiri::HTML(page)
li = doc.css('ul.ont-bd-phone li')
text = li.text.strip
# => T: 020 3514 0019

如果您正在寻找多个列表项,您可以映射/每个列表项以获取所有内容。 Nokogiri's documentation很棒,涵盖了很多用途。

答案 1 :(得分:-1)

从论坛?中移除([^$]+)或只写(.*)

<ul class="ont-bd-phone">[\s\S]+<li>[\s\S]+T:&nbsp;(.*)[\s\S]+<\/li>[\s\S]+<\/ul>