TCL一次注册多个特殊字符
TCL regsub multiple special characters in one shot
有没有办法将转义“\”添加到具有多个特殊字符的字符串中?
示例输入:a/b[1]/c/d{3}
期望的结果:a\/b\[1\]\/c\/d\{3\}
我已经在多个 regsubs 中一次完成一个特殊字符。但是有没有办法一次性搞定呢?
我会简单地转义所有 non-word 个字符:
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 and https://tcl.tk/man/tcl8.6/TclCmd/re_syntax.htm
一般的使用方法是构建一个 RE 字符集 ([…]
) 并使用它。在某些情况下,您必须小心处理这些字符(某些字符在其中很特殊,尤其是 ^
、]
、-
和 \
),但这并不过分难。
regsub -all {[][/{}]} $input {\&}
但是,如果您可以使用字符 类(例如 \W
或 [^\w]
),那么它会更简单易读。需要应用反斜杠的最常见情况与这些一起使用。
有没有办法将转义“\”添加到具有多个特殊字符的字符串中?
示例输入:a/b[1]/c/d{3}
期望的结果:a\/b\[1\]\/c\/d\{3\}
我已经在多个 regsubs 中一次完成一个特殊字符。但是有没有办法一次性搞定呢?
我会简单地转义所有 non-word 个字符:
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 and https://tcl.tk/man/tcl8.6/TclCmd/re_syntax.htm
一般的使用方法是构建一个 RE 字符集 ([…]
) 并使用它。在某些情况下,您必须小心处理这些字符(某些字符在其中很特殊,尤其是 ^
、]
、-
和 \
),但这并不过分难。
regsub -all {[][/{}]} $input {\&}
但是,如果您可以使用字符 类(例如 \W
或 [^\w]
),那么它会更简单易读。需要应用反斜杠的最常见情况与这些一起使用。