如何获得switch
语句来计算右括号?我想这两个"[][]"
和"[[\]]"
Tcl - 匹配glob模式中的右括号
set x "]"
switch -glob $x {
"[[\]]" {
puts "MATCH ]"
}
}
如何获得switch
语句来计算右括号?我想这两个"[][]"
和"[[\]]"
Tcl - 匹配glob模式中的右括号
set x "]"
switch -glob $x {
"[[\]]" {
puts "MATCH ]"
}
}
当你想匹配]
为一组的一部分switch
中的字符,你只有几个选择:
使用-regexp
而不是-glob
。它更复杂,需要不同的模式,但它也更加灵活(尤其是当涉及到这样的事情时)。
switch -regexp $x {
^[][(){}]$ {
puts "Matched!"
}
}
使用多个条款与身体交流:
switch -glob $x {
{\[} - {\]} - [(){}] {
puts "Matched!"
}
}
你无法做的是在设定除的非初始部分水珠比赛放在什么]
一个范围(glob匹配器非常笨,但很快)。没有任何合适的范围与您在此之后的内容完全匹配,因此单个glob将无法工作。
你可以使用:
set x "]";
switch -glob $x {
\] {
puts "MATCH ]"
}
}
或匹配比支架更多:
set x "foo]bar";
switch -glob $x {
*\]* {
puts "MATCH ]"
}
}
此外,文字']'工作(这被解析为_list_),'{]}'也是如此。当它遵循一个(未转义的)''''时,globbbing只会把'''看作是特殊的。 –
我需要它作为几个选项之一。我的完整程序有这样的''[[()[] {}]“'',除非这是行不通的。但是你的例子只会匹配括号,没有别的。 – baruch
@baruch这是一个重要的一点! –
这是所有基于您对Noxx的_otherwise伟大的答案,你匹配后(如果它工作)的评论:'[(()[] {}]' –