求正则表达式

zywhao 2011-02-22 09:09:53
要求: 字符串 !AIVDM,1,1,,A,19NS>F002w8iJ8pAN1bTt3pF087B,0*59$Check


用正则表达式找出开头为 "!"或"$" 结尾倒数第3个字符为"*" 并且最后两位是一16进制数或最后为Check

上面那个字符串可以分成两个
!AIVDM,1,1,,A,19NS>F002w8iJ8pAN1bTt3pF087B,0*59
$Check
...全文
72 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
兔子-顾问 2011-02-22
  • 打赏
  • 举报
回复
MatchCollection mc = Regex.Matches(your_str,@"(?i)!.+?\*[a-f0-9]{2}|\$check"); 
foreach(Match m in mc)
{
m.Value;//你要的
}
兔子-顾问 2011-02-22
  • 打赏
  • 举报
回复
[code=C# ]MatchCollection mc = Regex.Matches(your_str,@"(?i)!.+?\*[a-f0-9]{2}|\$check");
foreach(Match m in mc)
{
m.Value;//你要的
}[/code]
不懂装懂 2011-02-22
  • 打赏
  • 举报
回复
我的写错了,正确的看3楼
zywhao 2011-02-22
  • 打赏
  • 举报
回复
需求不明, 我再描述一下
!AIVDM,1,1,,A,19NS>F002w8iJ8pAN1bTt3pF087B,0*59$Check

起始字符为: '!'或'$' 结尾为'Check'或 '0*'+十六进制的数

如上面的这个就可以分解为
!AIVDM,1,1,,A,19NS>F002w8iJ8pAN1bTt3pF087B,0*59
$Check
q107770540 2011-02-22
  • 打赏
  • 举报
回复
(?i)[!$][^!$]*(?:[0-9A-F]{2}|Check)

最好加个忽略大小写为好
Jefferson-zh 2011-02-22
  • 打赏
  • 举报
回复
^[\!\$]{1}_*\*_(([0-9A-F]{2})|(Check))$ 感觉有点乱啊,对的可能行不大,有兴趣了试试。
兔子-顾问 2011-02-22
  • 打赏
  • 举报
回复
(?im)^[!$].+?\*[a-f0-9]{2}
q107770540 2011-02-22
  • 打赏
  • 举报
回复

void Main()
{
string s=@" !AIVDM,1,1,,A,19NS>F002w8iJ8pAN1bTt3pF087B,0*59$Check";

foreach(Match m in Regex.Matches(s,@"[!$][^!$]*(?:[0-9A-F]{2}|Check)"))
{
Console.WriteLine(m.Value);

}

/*
!AIVDM,1,1,,A,19NS>F002w8iJ8pAN1bTt3pF087B,0*59
$Check
*/
}
不懂装懂 2011-02-22
  • 打赏
  • 举报
回复
...需求不明......
(?i)!.*?\*[0-9A-F]{2}(?=\$)|\$.*check
可以得到你给的字符串想要的东西...但最好再明确你的需求...

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧