用于命令的正则表达式

时间:2014-08-07 10:22:40

标签: tcl expect at-command

我正在使用tcl并期望从手机发送和读取AT命令(我想使用命令发送短信)。我通过以下方式发送AT命令:

exp_send "AT\r"
expect {
        -re "(.*)OK"  {puts "Connected"}
}

现在我正在尝试查询手机支持的模式

exp_send "AT+CMGF=?\r"
expect {
       -re "AT(.*)"  {puts "$expect_out(1,string)"}
       "timeout"     {puts "Timeout occured"}
}

我使用的上述表达式将输出显示为

+CMGF=?

+CMGF:(0-1)

OK.

我想阅读的输出只有:

+CMGF:(0-1)

OK.

任何人都可以帮助我使用正确的正则表达式来获得所需的输出吗? 感谢。

1 个答案:

答案 0 :(得分:0)

您需要更复杂的RE:

expect {
    -re {AT\+CGMF:([^\n\r]+)} {
        puts "$expect_out(1,string)"
        exp_continue
    }
    OK { puts "done" }
    timeout { puts "timed out" }
}