Изменение кода совпадения регулярного выражения csh на tcl
Мне нужно изменить следующий кусок кода в оболочке на tcl. Пожалуйста помоги.
if (` expr $_f : proj_lp_ ` == 8) then
Мне нужен tcl-эквивалент условия внутри условия if.
Спасибо!
1 ответ
Смотрите страницу руководства expr, где говорится:
STRING : REGEXP anchored pattern match of REGEXP in STRING
Так что ваши _f
переменная содержит строку, и вы сравниваете ее с литеральной proj_lp_
, Результатом является длина матча. В коде tcl это может быть if {[regexp {^proj_lp_} $_f]} { ...}
как вы только заботитесь, если это соответствует. Вы также можете просто использовать if {[string match "proj_lp_*" $_f]} {...}
, Страница expr(1) говорит, что это привязанное регулярное выражение - следовательно, добавление каретки. Оба примера, которые я привел, будут совпадать только в начале входной строки (т.е. они привязаны).