2

我看到一个这样的:

regexp "hello\[^\\n]*06" $str

什么是\[^\\n]*试图匹配?

4

1 回答 1

5

在 tcl 中,由双引号 ( ) 分组的字符串""在求值时会进行替换。如您所知,tcl 理解以下替换:

  • $变量替换:任何以符号开头的单词都被替换为它的值。
  • 命令替代:[和之间的任何单词组]都被视为语句,第一个单词称为命令(函数)。
  • 转义替换:任何反斜杠 ( \) 都被视为转义序列并进行相应替换。

因此,下面的代码:

regexp "hello\[^\\n]*06" $str

相当于:

regexp {hello[^\n]*06} $str

所以它试图匹配包含单词“hello”和“06”的字符串,它们之间没有任何换行符。

于 2013-06-10T08:57:20.783 回答