我将如何获得对switch
右括号进行数学运算的语句?我都试过"[][]"
了"[[\]]"
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]
放入 glob 匹配集中,除了作为范围的非初始部分(glob 匹配器非常愚蠢,但速度很快)。没有任何合适的范围可以与您在此处所追求的完全匹配,因此单个 glob 将不起作用。