我正在尝试为String
通过 TCP/IP 套接字进入的所示打击制作正则表达式。
$AVSYS,99999999,V1.17,SN0000103,32768*16
每个字符串应以$
5 到 6 位数字之间的美元符号和大写字母字符开头。它们以*
2 位字母数字校验和结尾。每个字段以逗号分隔,
,可以是任何字符串。
我为它创建了一个正则表达式。
^\$[A-Z]{5,6}(\,.*)(\,.*)(\,.*)(\,.*)(\,.*)\*[\d\w]{2}$
我预计它会匹配,但它没有。即使我已经阅读了 Java 文档,我仍然不熟悉正则表达式。请帮助我获得正确的正则表达式。
已编辑
根据回复修复正则表达式后,我尝试了这两个。
^\$[A-Z]{5,6}(\,.*)(\,.*)(\,.*)(\,.*)(\,.*)\*[\d\w]{2}$
^\$[A-Z]{5,6}(\,.*?)(\,.*?)(\,.*?)(\,.*?)\*[\d\w]{2}$
但我得到的结果比我预期的要多。
$AVSYS,99999999,V1.17,SN0000103,32768*16
$AVRMC,80000551,144811,A,4351.3789,N,07923.4712,W,0.00,153.45,091107,A,,161,1*64
$AVRMC,80000551,144811,A,4351.3789,N,07923.4712,W,0.00,153.45,091107,A,,161,1,0,0*64
$EAVSYS,99999999,12345678901234567890,9057621228,,,*0B
以上句子都与正则表达式匹配。但我只想得到1)。我怎样才能做到这一点?