我在Expect脚本中编写正则表达式并希望使用([0-9] +)\ r \n作为正则表达式模式.为了防止[...]替代我用弯括号:
expect -re {([0-9]+)\r} {...}
但是{ \ }中的\ r 在括号中没有特殊含义(被视为两个字符).我试试
expect -re {([0-9]+)}\r {...}
但这需要解析错误.我试试
expect -re [concat {([0-9]+)} "\r"] {...}
但是concat在args之间增加了空间.
PS.我知道引用[ ...]引用的另一个解决方案[:
expect -re "(\[0-9]+)\r" {...}
但希望听到{...}引用风格的解决方案......
你是对的:\ r在{}中没有意义,因为你需要使用双引号,但需要转义方括号:
expect -re "(\[0-9\]+)\r" ...
Run Code Online (Sandbox Code Playgroud)
如果你想连接:
set expression {([0-9]+)}
append expression "\r"
expect -r $expression
Run Code Online (Sandbox Code Playgroud)