ESP32中使用正则匹配
C++中的正则表达式使用<regex>来经行正则匹配(当然ESP32中也可以)
首先声明这个匹配规则,和匹配的子序列
匹配规则如下图所示: 其中的Data_String_1是一个std::string类型的字符串
在ESP32中使用正则:
但是在ESP32中,这里出现了String和std::string两种类型字符串。正则匹配使用的是std::string。但是ESP32中一般使用的是String,使用Serial的print函数输出std::string类型的数会报错。String类使用std::string类接收也会报错。所以需要使用std::cout来输出(包含头文件iostream之后,这个输出就可以用了)。
由于两个类型的不通用所以我们需要两个类之间互相转变
使用c_str就可以完成String->std::string的类型转换
而std::string->String的类型转换就有些麻烦了,需要一个中间类型作为过渡------Char数组
如下面代码所示,先转为char数组,然后在由char数组转为String
串口Serial接受到的是String类型,然后转为std::string去正则匹配,最后在转为String输出
可能到这里有些迷惑了,直接用十六进制数组输入输出不行嘛,非得字符串输入输出。上位机下位机的数据交互我之前也是用十六进制数组的这个方法。但是后来还是仔细想了一下,数据还是字符串易读,所以试着用来一下正则匹配(这样可以很方便的弄一个类似于AT指令的东西)

---------------------------------------------------------------------------------------------------------------------------