我试图匹配以下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