在tcl中的regexp内传递变量

ram*_*mya 4 regex tcl

可能重复:
如何在regexp表达式中使用变量(TCL/Expect)

我想帮助将varibles传递给regexp.

假设我的代码是

set line "MPID:22 condition:AIS"
set id 22
if {[regexp {MPID:$id} $line]} {
puts "inside if"
}
Run Code Online (Sandbox Code Playgroud)

此正则表达式不起作用.如果我改变regexp

{[regexp {MPID:22} $line]} 
Run Code Online (Sandbox Code Playgroud)

有用.

有人可以为此提供解决方案.

The*_*eke 10

而不是{MPID:$id}你想要使用"MPID:$id":

if {[regexp "MPID:$id" $line]} {
    puts "inside if"
}
Run Code Online (Sandbox Code Playgroud)

{...}用于通过TCL于表达的组份在一起,但防止变量扩展.
如果你想要变量扩展,你应该使用"..."

  • 注意:当您从 {} 移动到 "" 时,请确保添加额外的转义字符。例如,如果您有 {\s*},请将其更改为“\\s*” (2认同)