我有以下代码
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$"
,它就会按预期工作。
第一个代码有什么问题。
答案 0 :(得分:3)
错误的是传递给解释器的原始正则表达式是:
.c
正则表达式中的上述内容表示c
后跟任何字符。
你需要做的是使用双反斜杠,第一个逃避第二个反斜杠。那或使用大括号引用(这阻止了第一次替换):
regsub "\\.c" $src ".o" obj
# or
regsub {\.c} $src ".o" obj