0
我是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
在输出)。
我认为这是因为正则表达式一旦找到匹配就结束搜索。但如何显示所有模式匹配?
感谢杰里......至于我是新来的TCL可以请你解释,为什么我们使用 - 甚至当我们得到的答案不正确 - – joe
@joe哦,这只是一个习惯矿。 '--'表示标志的结束。如果你的模式以'-'开头,这很重要,否则它可能会导致Tcl将它理解为另一个标志,如果这不是一个有效的标志,则会给你错误。 – Jerry
在上面的代码中,我可以使用一个变量来存储模式HAT GET DOT并使用该变量在正则表达式中设置模式{HAT GET DOT}; regexp -all -inline - {$ pattern} $ index – joe