Ruby模式匹配功能不起作用

时间:2014-03-31 13:06:38

标签: ruby regex

我从教程中复制了一段代码,你输入了一个字符串和一个模式,然后你得到了带有标记字符串匹配部分的输出。

然而,它仅适用于文字模式,例如,我输入"你好"和" l"作为一种模式,输出是"你好"两个都标记了。

但如果我输入"你好"我说模式是" l +"输出很简单。

以下是代码:

st = "\033[7m"
en = "\033[m"

while true
    print "str> "
    STDOUT.flush
    str = gets
    break if not str
    str.chop!
    print "pat> "
    STDOUT.flush
    re = gets
    break if not re
    re.chop!
    str.gsub! re, "#{st}\\&#{en}"
    print str, "\n"
end
print "\n"

出了什么问题?

1 个答案:

答案 0 :(得分:0)

你非常接近。执行gsub时,您需要将re括起来:/#{re}/

这告诉搜索模式被解释为正则表达式,而不是字符串文字。正如您现在定义的那样,您正在搜索模式l+与正则表达式“字母l 1次或更多次”