0

有没有办法将转义“\”添加到具有多个特殊字符的字符串中?

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

我已经在多个 regsub 中一次完成了一个特殊字符。但是有没有办法一次性做到呢?

4

2 回答 2

2

我会简单地转义所有非单词字符:

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

于 2019-06-07T00:55:28.270 回答
0

使用的一般方法是构建一个 RE 字符集 ( […]) 并使用它。在某些情况下,您必须小心处理(某些字符在其中很特殊,尤其是,^和),但这并不太难。]-\

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

但是,如果您可以使用字符类(例如\Wor [^\w]),那么它会更简单且更易于阅读。需要应用反斜杠的最常见情况适用于这些情况。

于 2019-06-07T08:19:24.267 回答