仅获取所有子匹配的值,将匹配保留在regexp -inline中

时间:2013-06-18 18:21:42

标签: tcl

我试图在regexp内联中单独使用子匹配..

set a "class-map id 400
   channel-rate normal
   class-map id 670
   channel-rate normal
   class-map id 456
   channel-rate normal"

puts [regexp -inline -all {class-map\sid\s([0-9]+)} $a]

其中列出了{class-map id 400} 400 {class-map id 670} 670 {class-map id 456} 456

如何在列表中单独获取子匹配?

1 个答案:

答案 0 :(得分:1)

使用foreach命令的 varlist 功能:

set ids {}
foreach {match submatch} [regexp -inline -all {class-map\sid\s([0-9]+)} $a] {
    lappend ids $submatch
}
set ids    ;# => 400 670 456