Ты очень близко:
set stringToTest "AXIOMB"
set match [regexp {^A([C-Z]*)B$} $stringToTest -> substring]
if {$match} {
puts "The middle was $substring"
}
(->
на самом деле необычное имя переменной. Но здесь я использую этот символ, потому что он выглядит лучше, чем использование эквивалентного в противном случае someRandomDummyVariable
.: -))
Если вы хотите получить строку для тестирования из командной строки или консоли, вот как:
Аргументы командной строки (без имени интерпретатора Tcl или сценария) представлены в виде списка в глобальной переменной списка argv
. Первый из них, таким образом, [lindex $::argv 0]
.
Строка может быть прочитана из консоли с помощью команды gets
.
set line [gets stdin]; # you can use other channel names too, of course
Обратите внимание, что, в отличие от C, gets
в Tcl строго защищен от переполнения буфера и (почти) полная мощность scanf()
примерно равна scan [gets stdin] ...
(за исключением некоторых форматов, исключенных по соображениям безопасности).