我如何获得switch
语句来计算结束括号?我尝试了"[][]"
和"[[\]]"
set x "]"
switch -glob $x {
"[[\]]" {
puts "MATCH ]"
}
}
答案 0 :(得分:4)
你可以使用:
set x "]";
switch -glob $x {
\] {
puts "MATCH ]"
}
}
或匹配多于括号:
set x "foo]bar";
switch -glob $x {
*\]* {
puts "MATCH ]"
}
}
答案 1 :(得分:2)
如果您想将]
作为switch
中一组字符的一部分进行匹配,那么您只有几个选项:
使用-regexp
匹配代替-glob
。它更复杂,需要不同的模式,但它也更灵活(特别是当涉及到这样的事情时)。
switch -regexp $x {
^[][(){}]$ {
puts "Matched!"
}
}
在身体共享中使用多个子句:
switch -glob $x {
{\[} - {\]} - [(){}] {
puts "Matched!"
}
}
你不能做的是将]
放在一个glob匹配集中,除非作为一个范围的非初始部分(glob matcher非常愚蠢,但很快) 。没有任何合适的范围可以与您在此处完全匹配,因此单个glob不起作用。