Ruby正则表达式“包含一个单词”

时间:2012-03-19 11:57:50

标签: ruby regex

在Ruby中,我如何编写正则表达式来检查单个单词的提交?

想象一下,我有一个接受文字的网络表单。我知道如果我想查看句子--only--是否包含“join”我可以使用

    if the_body == "join"

但是只有在整个文本提交是“加入”时才有效。

我如何捕获这样的提交:

“我想加入你的俱乐部?”要么 “请加入我”

谢谢!

3 个答案:

答案 0 :(得分:30)

你可以用

完成
string =~ /join/i

string.match(/join/i)

关于绩效评论的一点点更新:

>> s = "i want to join your club"
>> n = 500000
=> 500000
>> Benchmark.bm do |x|
..     x.report { n.times { s.include? "join" } }
..   x.report { n.times { s =~ /join/ } }
..   end
       user     system      total        real
   0.190000   0.000000   0.190000 (  0.186184)
   0.130000   0.000000   0.130000 (  0.135985)

虽然速度差异在这里无关紧要,但正则表达式版本实际上更快。

答案 1 :(得分:6)

在字符串中找到确切WORD的正确解决方案是

the_body.match(/\bjoin\b/i)或使用其他正则表达式:

(\W|^)join(\W|$)

请注意,我们需要找到"加入"字符串中是否存在WORD。对于像they are joining canalsMy friend Bonjoiny is a cool guy

这样的字符串,上述所有解决方案都会失败

答案 2 :(得分:0)

这里不需要Regexp - String#include?将完成这项工作。