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 以获得有关 $' 等其他变量的详细说明。
我正在尝试匹配字符串中的特定单词,但它匹配整个字符串
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 以获得有关 $' 等其他变量的详细说明。