如何在regexp表达式(TCL)中使用数组变量
在文件中,我有如下内容: name(0) = 123 name(1) = 456 name(2) = 789如何在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
工作,但仅针对第一个计数器。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)