Я новичок в программировании TCL. Я хочу написать tcl-код, который проверяет, присутствует ли какой-либо из шаблонов HAT GET DOT в данной строке, и если да, то мы должны показать, какой из шаблонов HAT GET DOT присутствует в данной строке. Если в строке присутствует более одного шаблона, должны отображаться все сопоставленные шаблоны. Я написал следующий код, но он отображает только один шаблон, даже если более одного шаблона соответствует данной строке.TCL шаблон соответствия
Может ли кто-нибудь помочь?
Спасибо заранее
Код:
set data1 {asdGETdf ferGETfhgDOT} #data1 is the given string
foreach index $test_data1 {
set result [regexp {ABC|ACC|ADC|AXC} $index match]
puts "\n$index"
if { $result==1} {
puts "MATCH:$match"
} else {
puts "NO MATCH"
}
}
output:-asdGETdf
MATCH:GET
ferGETfhgDOT
MATCH:GET
Для второй строки я ожидаю, что это отображение GET
и DOT
(не GET
в одиночку, как на выходе).
Я думаю, это потому, что regexp заканчивает поиск, как только совпадение найдено. Но как отображать все совпадения шаблонов?
Спасибо Джерри ... Так как я новичок в TCL пожалуйста, вы можете выяснить, почему мы используем - даже тогда, когда мы получаем ответ правильный, без - – joe
@joe о том, что это просто привычка мой. '--' указывает конец флагов. Это в основном важно, если, например, ваш шаблон начинается с '-', он может в противном случае заставить Tcl понять его еще как еще один флаг, и если это не допустимый флаг, дайте вам ошибки. – Jerry
В приведенном выше коде я могу использовать переменную для хранения паттернов HAT GET DOT и использовать эту переменную в regexp, как набор шаблонов {HAT GET DOT}; regexp -all -inline - {$ pattern} $ index – joe