Tcl 删除每个元素末尾的字符

Tcl 删除每个元素末尾的字符,tcl,Tcl,我在删除TCL中的字符时遇到问题 我有一个包含3个元素的变量: > puts $scan_ports scan_clkvco_clk scan_clkvco_div_2_clk scan_clkin_clk 我想保存在另一个变量中,同样的3个元素,但是删除每个元素末尾的_clk 这就是我尝试过的: regsub -all "_clk" $scan_ports "" scan_groups 但它会删除所有_clk匹配项 预期结果应该是: puts $scan_groups > sc

我在删除TCL中的字符时遇到问题

我有一个包含3个元素的变量:

> puts $scan_ports
scan_clkvco_clk scan_clkvco_div_2_clk scan_clkin_clk
我想保存在另一个变量中,同样的3个元素,但是删除每个元素末尾的_clk

这就是我尝试过的:

regsub -all "_clk" $scan_ports "" scan_groups
但它会删除所有_clk匹配项

预期结果应该是:

puts $scan_groups
> scan_clkvco scan_clkvco_div_2 scan_clkin
您可以使用:

注意:通常最好将大括号与re一起使用。

这是lmap可以提供帮助的地方,您确实应该使用锚定匹配

lmap sp $scan_ports {regsub {_clk$} $sp ""}

这样做意味着它不会使用诸如FooxCulkBaLyCK BooCLK之类的元素来做奇怪的事情。

< P>除非您还没有将SCAN端口持有的值作为TCL列表进行处理,否则您可能还需要考虑使用:

映射后缀。 如果已经有一个列表,或者打算在后续步骤中用作列表,那么Donal的解决方案很可能是可行的

lmap sp $scan_ports {regsub {_clk$} $sp ""}
string map {"_clk " " "} "$scan_ports "