如何在regexp表达式(TCL)中使用数组变量

如何在regexp表达式(TCL)中使用数组变量,tcl,Tcl,在文件中,我有如下内容: name(0) = 123 name(1) = 456 name(2) = 789 工作,但仅针对第一个计数器。Tcl中的大括号逐字引用字符串,因此不进行变量替换。如果需要变量替换,请使用双引号。由于您引用的是正则表达式,因此需要转义反斜杠 转换: {name\($i\) =\s+(.*)} 致: 或者像DKF建议的那样。这使得在没有所有反斜杠的情况下更容易看到regexp set pattern [format {name\(%d\) =\s+(.*)} $i] r

在文件中,我有如下内容:

name(0) = 123 name(1) = 456 name(2) = 789
工作,但仅针对第一个计数器。

Tcl中的大括号逐字引用字符串,因此不进行变量替换。如果需要变量替换,请使用双引号。由于您引用的是正则表达式,因此需要转义反斜杠

转换:

{name\($i\) =\s+(.*)}
致:

或者像DKF建议的那样。这使得在没有所有反斜杠的情况下更容易看到regexp

set pattern [format {name\(%d\) =\s+(.*)} $i]
regexp $pattern $line full($i) name($i)

参考文献:,

使用
subst
format
构建正则表达式可能更容易。
{name\($i\) =\s+(.*)}
"name\\($i\\) =\\s+(.*)"
set pattern [format {name\(%d\) =\s+(.*)} $i]
regexp $pattern $line full($i) name($i)