Ruby 匹配特定的词

Ruby matching the particular word

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

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

你应该把第一个匹配组:

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

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

Match—If obj is a Regexp, use it as a pattern to match against str,and returns the position the match starts, or nil if there is no match.

用正则表达式匹配后,您可以使用 $1, $2, ... 来输出匹配的组。所以你可以简单地做:

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

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