我在Expect脚本中编写正则表达式,并希望使用([0-9] +)\ r 作为正则表达式模式。为防止 [...] 替换,我使用弯曲括号:
expect -re {([0-9]+)\r} {...}
但 {...} 中的 \ _ 在大括号中没有特殊含义(视为两个字符)。我试试
expect -re {([0-9]+)}\r {...}
但这需要解析错误。我试试
expect -re [concat {([0-9]+)} "\r"] {...}
但 concat 在args之间添加空格。
PS 即可。我通过引用 [:
来了解“...”引用的另一种解决方案expect -re "(\[0-9]+)\r" {...}
但希望通过 {...} 引用样式听取解决方案...
答案 0 :(得分:5)
你是对的:\ r在{}中没有意义,因为你需要使用双引号,但需要转义方括号:
expect -re "(\[0-9\]+)\r" ...
如果你想连接:
set expression {([0-9]+)}
append expression "\r"
expect -r $expression
答案 1 :(得分:0)
除了这些之外别无他法:
regexp [string map {([0-9]+):spaceholder:} ":spaceholder:" "\r"] ...
regexp [list (\[0-9\]+)\r] ...
我的例子是regexp,因为我从未在regexp
命令中看到“”(字符串)作为模式,只有列表。
你可以尝试这样的事情:set p {([0-9]+)}; append p \r
然后使用$p
或set p {([0-9]+)}; regexp $p\r ...
您对空间的问题:[join "a b" ""]