我正在尝试找出捕获字符串中存在的数据包的最佳方法,该字符串也包含其他不需要的字符。 数据包是十六进制的,通常分组为字节,中间有空格。数据包的长度不同,并在开头和结尾分别用“10”和“10 03”分隔。因此,包含在其中的一些文本可能如下所示:
gibberish 10 01 23 AB CD EF 10 03 gibberish
我可以使用正则表达式来轻松捕获十六进制字节的字符串,但是如果不考虑分隔符,则可以将多个十六进制数据包变为一个,或者在开头或结尾看起来像十六进制的不需要的字符可以与包。我怎样才能让正则表达式考虑分隔符?
我可以在不使用正则表达式的情况下考虑周围的方法,但这看起来并不像效率那么高。
答案 0 :(得分:0)
通常,开头的胡言乱语是指内存地址。它是一个连续的字符串,没有任何空格。因此,使用\S+
来捕获它。
由于十六进制数据将在开头10
和结尾10 03
分隔,因此请使用它们:
^\S+ (10 (?:[0-9a-f]{2} )+10 03)
演示at regex101。
PS:你必须使用RegexOptions.IgnoreCase
标志。