Tcl 解释regsub调用

Tcl 解释regsub调用,tcl,expect,regsub,Tcl,Expect,Regsub,有人能解释这三种说法的含义吗? 这是三种不同的说法 regsub-all“\\\\033”$cmd“\033”cmd 这将用ASCII ESC字符替换后跟033的反斜杠的所有实例。它从cmd变量读取要处理的字符串,并将其写回该变量 [regsub-all“\\\\c”$cmd”cmd] 这将用空字符串替换后跟c的反斜杠的所有实例(有效地删除它)。它更新cmd变量。它将执行的替换数量替换到其调用上下文中 regsub-all“\\\\$i”$cmd[lindex$exp\\$u out$i]cmd

有人能解释这三种说法的含义吗? 这是三种不同的说法

regsub-all“\\\\033”$cmd“\033”cmd


这将用ASCII ESC字符替换后跟
033
的反斜杠的所有实例。它从
cmd
变量读取要处理的字符串,并将其写回该变量

[regsub-all“\\\\c”$cmd”cmd]


这将用空字符串替换后跟
c
的反斜杠的所有实例(有效地删除它)。它更新
cmd
变量。它将执行的替换数量替换到其调用上下文中

regsub-all“\\\\$i”$cmd[lindex$exp\\$u out$i]cmd


这个有点复杂。对于存储在
i
变量中的特定数值索引,它用
exp\u out
中列表的
i
第四个元素(从0开始计数)替换所有反斜杠实例,然后再加上索引。它更新
cmd
变量。

这些正则表达式中有四个反斜杠,因为它们被引用了两次,一次用于Tcl,一次用于RE-engine本身。这将用ASCII ESC字符替换后跟033的反斜杠的所有实例。它从cmd变量读取要处理的字符串,并将其写回该变量。你能澄清一下吗?我的CMD中没有033($j,string),你能澄清一下吗?将保存多少以前匹配的输出?如果字符串中没有给定子字符串的实例,则将其全部替换不会改变任何内容。你们知道,计算中所有人的通常行为。我认为你们应该问一个关于
$expect\u out($j,string)
的单独问题;这既不在最初的问题中,也有其自身的价值,因为它与Expect的工作方式密切相关。
regsub -all "\\\\033" $cmd "\033" cmd
[regsub -all "\\\\c" $cmd "" cmd]
regsub -all "\\\\$i" $cmd [lindex $exp_out $i] cmd