【问题标题】:Ruby matching the particular wordRuby 匹配特定单词
【发布时间】:2015-01-08 10:32:17
【问题描述】:

我正在尝试匹配字符串中的特定单词,但它匹配整个字符串

doc = "<span>Hi welcome to world</span>"
puts doc.match(/<span>(.*?)<\/span>/)

这段代码打印整个字符串

输出:

<span>Hi welcome to world</span>

但我只想要

Hi welcome to world

另一个问题是这个程序的输出只是一个整数

doc = "<span>Hi welcome to world</span>"
puts doc =~ (/<span>(.*?)<\/span>/)

输出:

0

【问题讨论】:

  • Nokogiri.parse(doc).at_css('span').text 会更合适

标签: ruby regex string parsing


【解决方案1】:

你应该把第一个匹配组:

puts doc.match(/<span>(.*?)<\/span>/)[1]
# => Hi welcome to world

回答您的另一个问题,来自documentation

Match——如果 obj 是一个正则表达式,将其用作匹配 str 的模式,并返回匹配开始的位置,如果没有匹配则返回 nil。

【讨论】:

    【解决方案2】:

    与 RegEx 匹配后,您可以使用 $1, $2, ... 来输出匹配的组。所以你可以简单地这样做:

    doc.match(/<span>(.*?)<\/span>/)
    puts $1
    

    您可以查看What are Ruby's numbered global variables 以获取有关 $' 等其他变量的详细说明。

    【讨论】:

      猜你喜欢
      • 2013-10-28
      • 2022-01-21
      • 1970-01-01
      • 1970-01-01
      • 2021-02-10
      • 2010-12-25
      • 2019-04-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多