How to use a variable in regexp [removed]TCL/Expec

2019-02-18 00:02发布

I'm trying to figure out how to use a string in a regexp match. I have been searching on google for an hour, figured i would just ask the experts.

This works:

#!/usr/bin/expect

set MYSTR "value"

if [ regexp -nocase "$MYSTR" $outcome matchresult ] then {
...
}

This is not working:

#!/usr/bin/expect

set MYSTR "value"

if [ regexp -nocase {something here:\s+$MYSTR} $outcome matchresult ] then {
...
}

I'm sure it's a simple syntax problem.

Thanks for your help

标签: regex tcl expect
1条回答
Ridiculous、
2楼-- · 2019-02-18 00:41

Right. You have 2 options: enclose the pattern with " , but then you have to protect \ from being parsed by Tcl instead of the regxp. Or you can use regexp -nocase [subst -nocommands -nobackslashes {something here:\s+$MYSTR}].

PS: put always {} around the expression:

if {[regexp -nocase [subst -nocommands -nobackslashes {something here:\s+$MYSTR}]} then {
...
}
查看更多
登录 后发表回答