当向调制解调器发送命令时,通常会发送一个命令(例如AT
),后跟一个\r
. 然后听调制解调器查看命令的结果,其中重复该命令本身。所以来自调制解调器的典型通信反馈看起来像
AT\r\rOK\r\n
如果出现错误,它看起来像
AT\r\rERROR\r\n
但一般来说,根据实际的 AT 命令,返回的值可以是除OK
and之外的任何值ERROR
。
我想提取这个响应,即返回我的正则表达式,OK
或者ERROR
调制解调器回复的任何内容。以下是条件:
- 我想验证字符串中的原始命令,即
ATX\r\rOK\r\n
当命令只是AT
. - 我根本不在乎有多少空白字符,我唯一期望的是
\n
最后有一个。所以AT\rOK\n
andAT\nOK\r\r\n
也应该匹配,但不是AT\nOK\r\r
. - 最后,我不关心左侧的额外内容,只要它们与 AT 命令用空格字符分隔即可。所以
OK\rAT\rOK\n
应该匹配(即右侧出现的OK
),但XAT\rOK\r\n
不应该匹配。
是否可以使用一个正则表达式来提取调制解调器响应,或者我需要进行多个正则表达式搜索?要查看整个内容是否完全匹配,我可能已经找到了一个表达式:
r = re.compile("\s+AT\s+\w+\s*\\n$")
但是如何提取其中\w+
的内容呢?