提取与TCL中的模式匹配的变量的值

时间:2017-05-24 10:26:33

标签: tcl

我有一个名为参数的列表,此列表的内容可能不同,但它看起来像:

webservices-extra.jar
webservices-extra-api.jar
webservices-rt.jar
webservices-tools.jar 

此列表来自阅读文件并已完成一些预先格式化。我只想获取var1的值并将其存储在变量中。例如,介于两者之间的任何东西' ='标志和';'签名但仅适用于var1(在本例中为数字2)。同样,我可以删除所有不匹配的行' var1'。

1 个答案:

答案 0 :(得分:0)

假设您的parameters列表已设置,您可以执行以下操作:

foreach item $parameters {
  if {[regexp "var1\\s*=\\s*(\\w+);" $item wholeMatch myVal]} {
       break
  }
}
puts "value is '$myVal'"

我使用的正则表达式允许等号前后的可选空格。请查看Tcl's regex syntax并根据需要进行调整。

使用整个文件进行正则表达式搜索可能更容易,而不是将文件解析为列表。但是,请再看看Tcl的文档。