Tcl関係のおぼえがき

●文字列に非ASCII文字が含まれているかを判定する
日本語など非ASCII文字が含まれているかは正規表現で判定できます。

if {[regexp {[\u0080-\uffff]} $v]} {
    # 含まれている
}

●regsubとバックスラッシュについて
文字列$sに含まれる"."を、"a."に変換するとき、

regsub {\.} $s {a\.} s2

とすると、バックスラッシュが残ってしまいます。この原因は?
これは、最初の引数{\.}は正規表現なので、 その解釈中にバックスラッシュが必要なのですが、 3番目の引数{a\.}は正規表現ではありません。 また波括弧{}で囲んだ中は改行文字\nを除き、 バックスラッシュの解釈はしないというTcl言語のルールにより、 バックスラッシュ文字が残った "a\." に変換されてしまうためです。

やねうらの top
(first uploaded 2012/05/05 last updated 2022/09/03, MISUMI URANO)