如何獲得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偉大的答案,你匹配後(如果它工作)的評論:'[(()[] {}]' –