大哥大姐帮我问一下,tcl 正则表达式循环匹配?
想用TCL的正则表达式regexp 多次匹配字符串,类似perl 的正则表达式的gset str="
A1111.dat
A2222.dat
A333.dat
A4444.dat"
set num [regexp -all {(A.*\.dat)} $str Matchstring]
puts "num = $num"
puts [lindex $Matchstring 0]
puts [lindex $Matchstring 1]
puts [lindex $Matchstring 2]
这样能多次匹配到字符串,但是num变量得到的是“是否匹配成功”,而不是匹配到了多少个,没办法写循环。我怎么才能知道匹配到了多少个??
perl 中使用/g可以取出所有匹配项放入list的。这个问题已解决了,但不知是否最好的解决方法。
set bSuccess [regexp -all {(Sub_.*\.dat)} $allBuffer allFiles]
#上面bSuccess保存是否匹配成功,
#allFiles 保存匹配上的所有内容
if { $bSuccess == 1 } {
foreach oneFile $allFiles {
# 这里就可以遍历所有匹配上的内容了
}