我看到了这样的回复:
regexp "hello\[^\\n]*06" $str
尝试匹配的\[^\\n]*
是什么?
最佳答案
在 tcl 中,由双引号 (""
) 分组的字符串在求值时会进行替换。如您所知,tcl 理解以下替换:
- 变量替换:任何以
$
符号开头的单词都会替换其值。 - 命令替换:
[
和]
之间的任何一组单词都被视为一条语句,第一个单词被称为命令(函数)。 - 转义替换:任何反斜杠 (
\
) 都会被视为转义序列并进行相应替换。
因此,有以下代码:
regexp "hello\[^\\n]*06" $str
相当于:
regexp {hello[^\n]*06} $str
因此它尝试匹配包含单词“hello”和“06”的字符串,并且它们之间没有任何换行符。
关于regex - 下面的正则表达式试图匹配什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17019855/