试着匹配的以下正则表达式是什么?

时间:2013-06-10 08:36:15

标签: regex tcl

我看到了这样的话:

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

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

1 个答案:

答案 0 :(得分:5)

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

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

因此,以下代码:

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

相当于:

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

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