我看到了这样的话:
regexp "hello\[^\\n]*06" $str
\[^\\n]*
试图匹配的是什么?
答案 0 :(得分:5)
在tcl中,按双引号(""
)分组的字符串在评估时会进行替换。如您所知,tcl理解以下替换:
$
符号开头的任何单词都将替换其值。[
和]
之间的任何单词组都被视为一个语句,第一个单词被称为命令(函数)。\
)都被视为转义序列并相应地替换。因此,以下代码:
regexp "hello\[^\\n]*06" $str
相当于:
regexp {hello[^\n]*06} $str
所以它试图匹配包含单词“hello”和“06”的字符串,而它们之间没有任何换行符。