要求: 字符串 !AIVDM,1,1,,B,B69DlVP0HJ<8=`4F`:H!AIVDM,1,1,,A,19NS>F002w8iJ8pAN1bTt3pF087B,0*59
用正则表达式找出开头为 "!" 结尾倒数第3个字符为"*" 并且最后两位是一16进制数
现正则表达式为: (\$|!).*?\*[0-9a-fA-F]{2}
现在出现了问题,,如上面给出的字符串 是符合了该正则表达式,在该字符串中
!AIVDM,1,1,,A,19NS>F002w8iJ8pAN1bTt3pF087B,0*59 其实也是符合要求的,但是却不能将它分析出来请问如何改正一下正则表达式, 让它可以将这两个都能同时找出来.
用正则表达式找出开头为 "!" 结尾倒数第3个字符为"*" 并且最后两位是一16进制数
现正则表达式为: (\$|!).*?\*[0-9a-fA-F]{2}
现在出现了问题,,如上面给出的字符串 是符合了该正则表达式,在该字符串中
!AIVDM,1,1,,A,19NS>F002w8iJ8pAN1bTt3pF087B,0*59 其实也是符合要求的,但是却不能将它分析出来请问如何改正一下正则表达式, 让它可以将这两个都能同时找出来.
![^!]*\*[0-9a-fA-F]{2} 这样应该可以
但是 !AIVDM,1,1,,B,B69DlVP0HJ<8=`4F`:H 这个也要匹配出来吗?
这整个字符是一个,但是在这个字符串中还包含一个符合标准的,
!AIVDM,1,1,,A,19NS>F002w8iJ8pAN1bTt3pF087B,0*59
也应该分析出来才对..
!AIVDM,1,1,,B,B69DlVP0HJ<8=`4F`:H!AIVDM,1,1,,A,19NS>F002w8iJ8pAN1bTt3pF087B,0*59!dsddsasdasd*67这样是不是要有
!AIVDM,1,1,,B,B69DlVP0HJ<8=`4F`:H!AIVDM,1,1,,A,19NS>F002w8iJ8pAN1bTt3pF087B,0*59!AIVDM,1,1,,A,19NS>F002w8iJ8pAN1bTt3pF087B,0*59!dsddsasdasd*67!AIVDM,1,1,,A,19NS>F002w8iJ8pAN1bTt3pF087B,0*59!dsddsasdasd*67!AIVDM,1,1,,B,B69DlVP0HJ<8=`4F`:H!AIVDM,1,1,,A,19NS>F002w8iJ8pAN1bTt3pF087B,0*59!dsddsasdasd*67这5种匹配?
Regex reg = new Regex(@"(?is)(?=(!.*?\*[0-9a-f]{2}))");
MatchCollection mc = reg.Matches(test);
foreach (Match m in mc)
{
richTextBox2.Text += m.Groups[1].Value + "\n";
}
/*-------输出---------
!AIVDM,1,1,,B,B69DlVP0HJ<8=`4F`:H!AIVDM,1,1,,A,19NS>F002w8iJ8pAN1bTt3pF087B,0*59
!AIVDM,1,1,,A,19NS>F002w8iJ8pAN1bTt3pF087B,0*59
*/