TCL regsub一击多个特殊字符

时间:2019-06-07 00:36:58

标签: tcl regsub

是否可以将转义符'\'添加到具有多个特殊字符的字符串中?

示例输入:a/b[1]/c/d{3}
期望的结果:a\/b\[1\]\/c\/d\{3\}

我已经在多个regsub中同时完成了一个特殊字符。但是有一种方法可以一次完成吗?

2 个答案:

答案 0 :(得分:2)

我只是转义所有非单词字符:

set input {a/b[1]/c/d{3}}
set output [regsub -all {\W} $input {\\&}]
puts $output
a\/b\[1\]\/c\/d\{3\}

ref:https://tcl.tk/man/tcl8.6/TclCmd/regsub.htmhttps://tcl.tk/man/tcl8.6/TclCmd/re_syntax.htm

答案 1 :(得分:0)

使用的一般方法是构建RE字符集([…])并使用它。在某些情况下,您必须格外小心(某些字符是特殊字符,尤其是^]-\),但事实并非如此困难。

regsub -all {[][/{}]} $input {\\&}

但是,如果您可以使用字符类(例如\W[^\w]),则它会更加简单易读。最常见的需要使用反斜杠的情况可以解决这些问题。