有没有办法将转义“\”添加到具有多个特殊字符的字符串中?
示例输入:a/b[1]/c/d{3}
期望的结果:a\/b\[1\]\/c\/d\{3\}
我已经在多个 regsub 中一次完成了一个特殊字符。但是有没有办法一次性做到呢?
我会简单地转义所有非单词字符:
set input {a/b[1]/c/d{3}}
set output [regsub -all {\W} $input {\\&}]
puts $output
a\/b\[1\]\/c\/d\{3\}
参考:https ://tcl.tk/man/tcl8.6/TclCmd/regsub.htm和https://tcl.tk/man/tcl8.6/TclCmd/re_syntax.htm
使用的一般方法是构建一个 RE 字符集 ( […]
) 并使用它。在某些情况下,您必须小心处理(某些字符在其中很特殊,尤其是,^
和),但这并不太难。]
-
\
regsub -all {[][/{}]} $input {\\&}
但是,如果您可以使用字符类(例如\W
or [^\w]
),那么它会更简单且更易于阅读。需要应用反斜杠的最常见情况适用于这些情况。