是否可以将转义符'\'添加到具有多个特殊字符的字符串中?
示例输入:a/b[1]/c/d{3}
期望的结果:a\/b\[1\]\/c\/d\{3\}
我已经在多个regsub中同时完成了一个特殊字符。但是有一种方法可以一次完成吗?
答案 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.htm和https://tcl.tk/man/tcl8.6/TclCmd/re_syntax.htm
答案 1 :(得分:0)
使用的一般方法是构建RE字符集([…]
)并使用它。在某些情况下,您必须格外小心(某些字符是特殊字符,尤其是^
,]
,-
和\
),但事实并非如此困难。
regsub -all {[][/{}]} $input {\\&}
但是,如果您可以使用字符类(例如\W
或[^\w]
),则它会更加简单易读。最常见的需要使用反斜杠的情况可以解决这些问题。