删除每个元素末尾的字符

时间:2019-08-01 10:44:14

标签: 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
> scan_clkvco scan_clkvco_div_2 scan_clkin

3 个答案:

答案 0 :(得分:1)

除非您尚未将npm update new-name的值作为Tcl列表对待,否则您可能还需要考虑使用string map映射后缀:

scan_ports

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

答案 1 :(得分:0)

您可以使用end of word anchor

regsub -all {_clk\M} $scan_ports "" scan_groups
# scan_clkvco scan_clkvco_div_2 scan_clkin

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

答案 2 :(得分:0)

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

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

这样做的话,就不会对foo_clk_bar_clk boo_clk这样的元素做奇怪的事情。