Ruby匹配特定单词

时间:2015-01-08 10:32:18

标签: ruby regex string parsing

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

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

2 个答案:

答案 0 :(得分:4)

你应该把第一个匹配组:

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

documentation

回答您的另一个问题
  

匹配 - 如果obj是Regexp,则将其用作匹配str的模式,并返回匹配开始的位置,如果没有匹配则返回nil。

答案 1 :(得分:0)

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

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

您可以查看What are Ruby's numbered global variables以获取有关其他变量的详细说明,例如$&#39;。