TCL:\。没有按预期工作

时间:2016-10-18 06:41:09

标签: tcl

我有以下代码

set src "/tmp/16.10c.00.01/run.c"
regsub "\.c" $src ".o" obj
puts "$obj"

打印/tmp/16.1.o.00.01/run.c作为输出。 预期产出在/tmp/16.10c.00.01/run.o的位置。 如果我将其保留为"\.c$",它就会按预期工作。 第一个代码有什么问题。

1 个答案:

答案 0 :(得分:3)

错误的是传递给解释器的原始正则表达式是:

.c

正则表达式中的上述内容表示c后跟任何字符。

你需要做的是使用双反斜杠,第一个逃避第二个反斜杠。那或使用大括号引用(这阻止了第一次替换):

regsub "\\.c" $src ".o" obj
# or
regsub {\.c} $src ".o" obj