Ruby 两个字符串的正则表达式格式
我想要一个正则表达式,它将提取单词happy和good,两者都是非贪婪的,并且都不区分大小写Ruby 两个字符串的正则表达式格式,ruby,regex,Ruby,Regex,我想要一个正则表达式,它将提取单词happy和good,两者都是非贪婪的,并且都不区分大小写 @a = [" I am very HAppy!!", "sad today..", "happy. to hear about this..", "the day is good", "sad one", "sad story"] 看起来这只适用于一个词: @z = @a.join.scan(/\bhappy\b/i) 但当我加入good时,它并不像我期望的那样有效 @z = @a.join.sc
@a = [" I am very HAppy!!", "sad today..", "happy. to hear about this..", "the day is good", "sad one", "sad story"]
看起来这只适用于一个词:
@z = @a.join.scan(/\bhappy\b/i)
但当我加入good时,它并不像我期望的那样有效
@z = @a.join.scan(/\bhappy|good\b/i)
期望(快乐的2x和良好的1x):
它给我的结果是:
@z.size => 2
我猜你的意思是,这两个都很幸福,但不好。这是因为你看单词的边界,当你加入字符串时,它就变成了goodsad
删除单词边界条件,它应该与预期匹配。您应该在替换项周围添加括号,以便
\b
s将作为一个单元应用于快乐
或良好
:
\b(happy|good)\b
然后,您可能希望扫描@a
数组中的每个元素,而不是a,并被调用:
@a.map { |s| s.scan(/\b(happy|good)\b/i) }.flatten
# ["HAppy", "happy", "good"]
您还可以使用非捕获组:
\b(?:happy|good)\b
但在这种情况下,它不会有任何区别。“没有像我预期的那样工作”-你期望什么,它做什么?
\b(?:happy|good)\b