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