Регулярное выражение TCL с использованием процедуры - PullRequest
0 голосов
/ 30 апреля 2010

Я начинающий программист TCL. Вот и я - мой первый пост на форуме stackoverflow.

Я хотел бы написать регулярное выражение, которое соответствует любой & только строки начинаются с символа A и заканчиваются B. Все отображаемые символы должны отображаться. Например, AXIOMB как ввод от пользователя, который начинается с A и заканчивается символом B.

Вот моя попытка

regexp { (^A([C-Z]+)B$)}

Спасибо

1 Ответ

3 голосов
/ 30 апреля 2010

Ты очень близко:

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] ... (за исключением некоторых форматов, исключенных по соображениям безопасности).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...