欢迎光临散文网 会员登陆 & 注册

ESP32中使用正则匹配

2021-10-27 09:50 作者:云汉含星  | 我要投稿

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指令的东西)

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

ESP32中使用正则匹配的评论 (共 条)

分享到微博请遵守国家法律