正则匹配与字符集过滤增强应答规则
为什么需要正则匹配
简单匹配只能做"包含匹配"——接收数据里有你要的字符串就触发。但很多场景需要更精确的匹配条件:
- 匹配完整一行指令(
^AT\+VER\?\r\n$)。 - 匹配带参数的指令并从中提取参数(
^AT\+NAME=(.+)\r\n$)。 - 排除某些不关心的数据(如只处理 AT 指令,跳过其他噪声)。
正则匹配开关
在自动应答规则的编辑界面中,将"匹配方式"从"简单匹配"切换为 正则匹配 即可。之后"匹配内容"栏里填的就是正则表达式了。
常用正则模式
| 需求 | 正则示例 | 说明 |
|---|---|---|
| 完整匹配 AT+VER? | ^AT\+VER\?\r\n$ | ^ 开头 $ 结尾,精准整条指令 |
| 匹配任意 3 位数字 | \d{3} | \d 匹配数字,{3} 表示恰好 3 个 |
| 匹配 IP 地址 | \d+\.\d+\.\d+\.\d+ | 简化版 IPv4 匹配 |
| 匹配 HEX 数据 | [0-9A-Fa-f]{2} | 两个十六进制字符 |
| 提取参数值 | ^AT\+NAME=(.+)\r\n$ | (.+) 捕获 NAME= 后面的值 |
正则捕获组与应答内容
在正则中用括号 () 捕获的内容,可以在应答中通过 \1、\2 引用。
例如匹配规则:^AT\+NAME=(.+)\r\n$
应答内容:OK\r\n
无论对方发来 AT+NAME=Device01\r\n 还是 AT+NAME=ABC\r\n,都回复 OK\r\n。如果想把捕获到的参数也回显回来,应答内容可以写 OK NAME=\1\r\n。
字符集过滤
V5.0.9.0 起增强了自动回复功能,增加了正则字符集过滤。这个功能让你可以在处理接收数据前,先用字符集规则过滤掉不关心的内容——比如只保留可打印 ASCII 字符,跳过控制字符。
常见过滤需求:
- 只保留英文字母和数字:
[^a-zA-Z0-9]替换为空。 - 去掉所有空白字符:
\s+替换为空。
正则调试小贴士
正则写出来后,建议先用在线正则测试工具(如 regex101.com)验证一下匹配逻辑是否正确,再填入 NetAssist。避免因为正则写错导致规则不触发或误触发。
历史版本说明
自动回复功能在 V5.0.1 引入,V5.0.9.3 修复了 V5.0.9.0~5.0.9.2 中的自动回复功能失效问题。建议使用 5.0.10 及以上版本。V5.0.13 起脚本引擎和自动应答都增加了 UTF-8 编码支持,匹配包含中文的规则不再有编码问题。