How would I get the switch
statement to math the closing bracket? I tried both "[][]"
and "[[\]]"
set x "]"
switch -glob $x {
"[[\]]" {
puts "MATCH ]"
}
}
あなたが使用することができます:
set x "]";
switch -glob $x {
\] {
puts "MATCH ]"
}
}
またはブラケット以上に一致するには:
set x "foo]bar";
switch -glob $x {
*\]* {
puts "MATCH ]"
}
}
]
の文字グループの一部として一致させたい場合switch
、いくつかのオプションしかありません。
-regexp
の代わりにマッチングを使用し-glob
ます。より複雑で、別のパターンが必要ですが、より柔軟でもあります (特にこのような場合)。
switch -regexp $x {
^[][(){}]$ {
puts "Matched!"
}
}
本文を共有する複数の句を使用します。
switch -glob $x {
{\[} - {\]} - [(){}] {
puts "Matched!"
}
}
できない]
ことは、範囲の先頭以外の部分を除いて、a をグロブ マッチ セットに入れることです (グロブ マッチャはかなりばかげていますが、高速です)。ここで求めているものと正確に一致する適切な範囲はないため、単一のグロブは機能しません。