使用正则表达式捕获十六进制数据包

时间:2015-10-10 06:14:44

标签: c# regex

我正在尝试找出捕获字符串中存在的数据包的最佳方法,该字符串也包含其他不需要的字符。 数据包是十六进制的,通常分组为字节,中间有空格。数据包的长度不同,并在开头和结尾分别用“10”和“10 03”分隔。因此,包含在其中的一些文本可能如下所示:

gibberish 10 01 23 AB CD EF 10 03 gibberish

我可以使用正则表达式来轻松捕获十六进制字节的字符串,但是如果不考虑分隔符,则可以将多个十六进制数据包变为一个,或者在开头或结尾看起来像十六进制的不需要的字符可以与包。我怎样才能让正则表达式考虑分隔符?
我可以在不使用正则表达式的情况下考虑周围的方法,但这看起来并不像效率那么高。

1 个答案:

答案 0 :(得分:0)

通常,开头的胡言乱语是指内存地址。它是一个连续的字符串,没有任何空格。因此,使用\S+来捕获它。

由于十六进制数据将在开头10和结尾10 03分隔,因此请使用它们:

^\S+ (10 (?:[0-9a-f]{2} )+10 03)

演示at regex101

PS:你必须使用RegexOptions.IgnoreCase标志。