我試圖匹配以下NMEA串NMEA正則表達式匹配:無效前導表達式錯誤
$GPRMC,092751.000,A,5321.6802,N,00630.3371,W,0.06,31.66,280511,,,A*45
我寫在這link
正則表達式測試了正則表達式是如下
\$GPRMC,((?:[0-9]+)(?:\.(?:[0-9]+))?,|,)([A|V],|,)([0-9]+\.[0-9]+,|,)([N|S|E|W],|,)([0-9]+\.[0-9]+,|,)([N|S|E|W],|,)([0-9]+\.[0-9]+,|,)([0-9]+\.[0-9]+,|,)([0-9]+,|,)([0-9]+\.[0-9]+,|,)(.*)
我在C中使用regex.h頭來編譯頭文件,以下是我的代碼
#define NU [0-9]+
#define FLT NU\\.NU
regex_text= "\\$GPRMC,((?:NU)(?:\\.(?:NU))?,|,)([A|V],|,)(FLT,|,)([N|S|E|W],|,)(FLT,|,)([N|S|E|W],|,)(FLT,|,)(FLT,|,)(NU,|,)(FLT,|,)(.*)";
find_text = "$GPRMC,092751.000,A,5321.6802,N,00630.3371,W,0.06,31.66,280511,,,A*45";
以下是我從GDB GDB輸出得到的錯誤:
23 int status = regcomp (r, regex_text, REG_EXTENDED|REG_NEWLINE);
(gdb)
24 if (status != 0) {
(gdb)
26 regerror (status, r, error_message, MAX_ERROR_MSG);
(gdb)
27 printf ("Regex error compiling '%s': %s\n",
(gdb)
28 regex_text, error_message);
(gdb)
27 printf ("Regex error compiling '%s': %s\n",
(gdb)
Regex error compiling '\$GPRMC,((?:NU)(?:\.(?:NU))?,|,)([A|V],|,)(FLT,|,)([N|S|E|W],|,)(FLT,|,)([N|S|E|W],|,)(FLT,|,)(FLT,|,)(NU,|,)(FLT,|,)(.*)': Invalid preceding regular expression
29 return 1;
任何幫助表示讚賞
如果你只是想分析NMEA字符串,爲什麼不只是基於逗號分割它。帶有NMEA動詞或命令和休息的第一個索引轉到它的數據。 – Saleem