Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby模式匹配函数不工作_Ruby_Regex - Fatal编程技术网

Ruby模式匹配函数不工作

Ruby模式匹配函数不工作,ruby,regex,Ruby,Regex,我从一个教程中复制了一段代码,在这个教程中,您输入一个字符串和一个模式,然后您得到的输出中标记了字符串的匹配部分 然而,它只适用于文本模式,例如,我输入“hello”和“l”作为模式,输出为“hello”,并标记了两个ls 但是如果我输入“hello”,我说模式是“l+”,那么输出就是简单的hello 代码如下: st = "\033[7m" en = "\033[m" while true print "str> " STDOUT.flush str = get

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

然而,它只适用于文本模式,例如,我输入“hello”和“l”作为模式,输出为“hello”,并标记了两个ls

但是如果我输入“hello”,我说模式是“l+”,那么输出就是简单的hello

代码如下:

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"

怎么了?

你们很接近。当您执行
gsub
时,需要像这样将
re
括起来:
/{re}/

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