我从教程中复制了一段代码,你输入了一个字符串和一个模式,然后你得到了带有标记字符串匹配部分的输出。
然而,它仅适用于文字模式,例如,我输入"你好"和" 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"
出了什么问题?
答案 0 :(得分:0)
你非常接近。执行gsub
时,您需要将re
括起来:/#{re}/
这告诉搜索模式被解释为正则表达式,而不是字符串文字。正如您现在定义的那样,您正在搜索模式l+
与正则表达式“字母l
1次或更多次”