ESP32中使用正則匹配
C++中的正則表達式使用<regex>來經(jīng)行正則匹配(當然ESP32中也可以)
首先聲明這個匹配規(guī)則,和匹配的子序列
匹配規(guī)則如下圖所示: 其中的Data_String_1是一個std::string類型的字符串
在ESP32中使用正則:
但是在ESP32中,這里出現(xiàn)了String和std::string兩種類型字符串。正則匹配使用的是std::string。但是ESP32中一般使用的是String,使用Serial的print函數(shù)輸出std::string類型的數(shù)會報錯。String類使用std::string類接收也會報錯。所以需要使用std::cout來輸出(包含頭文件iostream之后,這個輸出就可以用了)。
由于兩個類型的不通用所以我們需要兩個類之間互相轉(zhuǎn)變
使用c_str就可以完成String->std::string的類型轉(zhuǎn)換
而std::string->String的類型轉(zhuǎn)換就有些麻煩了,需要一個中間類型作為過渡------Char數(shù)組
如下面代碼所示,先轉(zhuǎn)為char數(shù)組,然后在由char數(shù)組轉(zhuǎn)為String
串口Serial接受到的是String類型,然后轉(zhuǎn)為std::string去正則匹配,最后在轉(zhuǎn)為String輸出
可能到這里有些迷惑了,直接用十六進制數(shù)組輸入輸出不行嘛,非得字符串輸入輸出。上位機下位機的數(shù)據(jù)交互我之前也是用十六進制數(shù)組的這個方法。但是后來還是仔細想了一下,數(shù)據(jù)還是字符串易讀,所以試著用來一下正則匹配(這樣可以很方便的弄一個類似于AT指令的東西)

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