$ report包含以下文字:
// Command : generate report
Report 123
------------------------------
status Names
------------------------------
Flat : Module1
Flat : Module2
------------------------------
Total Flattened = 2
我只想提取模块名称。模块数量不详。如果我可以做这样的事情,那将是非常好的:
set modules [regexp -all -inline {Flat\s+:\s+(\S+)} $report]
但这会给我不关心的$模块带来额外的垃圾。我错过了什么吗?我知道有办法解决这个问题。似乎很奇怪,似乎没有办法关闭匹配完整的表达式。特别是因为有关闭子表达式匹配的语法(?:)。
答案 0 :(得分:1)
不,没有办法得不到完整的匹配字符串。
lmap {full capture} $modules {set capture}
为您挑选捕获的字符串。
# for Tcl 8.5 and earlier
set res [list]
foreach {full capture} $modules {lappend res $capture}
你得到了所有这些东西,因为它可能是相关的,如果不是,那么很容易找出你想要的东西。