正则表达式以 2-8 为一组匹配十六进制
Regex Match Hexidecimal in Groups of 2-8
我正在研究一个正则表达式来匹配一个十六进制字符串,但在接近尾声时遇到了一些问题。我专门寻找不包含 00 的 2 字节组,长度在 2 到 8 个字节之间。除了当少于 8 个字节时,它会允许额外的 00 有时在其中。
https://regex101.com/r/jq3QpP/1/
(?!(00)+)([0-9a-fA-F]{2,8})?(?!(00)+) // This on the below text gives the following matches
C86B0200554E0200C86B02000000000000000000270000008109000000000000EC6A050079750
18881000000410000280100000000000000000001000002010400000000000000000000000000
0000000000000000000000F65FA45900000000FF0000002F0000000000000049000000403C9F5
A000000000000000000000000FFFF330000000000000F06EAE8333536
Match 1
Full match 0-8 `C86B0200`
Group 2. 0-8 `C86B0200`
Match 2
Full match 8-16 `554E0200`
Group 2. 8-16 `554E0200`
Match 3
Full match 16-21 `C86B0`
Group 2. 16-21 `C86B0`
Match 4
Full match 21-21 ``
Match 5
Full match 39-47 `02700000`
Group 2. 39-47 `02700000`
第1、2、5场多出00,第3场不知为何错过了20。如果你知道我错过了什么,请告诉我
您可以避免匹配 00
,方法是一次只允许两个数字中的一个 0
:
(?:[A-F1-9][A-F0-9]|[A-F0-9][A-F1-9]){1,4}(?=(?:..)*$)
我正在研究一个正则表达式来匹配一个十六进制字符串,但在接近尾声时遇到了一些问题。我专门寻找不包含 00 的 2 字节组,长度在 2 到 8 个字节之间。除了当少于 8 个字节时,它会允许额外的 00 有时在其中。
https://regex101.com/r/jq3QpP/1/
(?!(00)+)([0-9a-fA-F]{2,8})?(?!(00)+) // This on the below text gives the following matches
C86B0200554E0200C86B02000000000000000000270000008109000000000000EC6A050079750
18881000000410000280100000000000000000001000002010400000000000000000000000000
0000000000000000000000F65FA45900000000FF0000002F0000000000000049000000403C9F5
A000000000000000000000000FFFF330000000000000F06EAE8333536
Match 1
Full match 0-8 `C86B0200`
Group 2. 0-8 `C86B0200`
Match 2
Full match 8-16 `554E0200`
Group 2. 8-16 `554E0200`
Match 3
Full match 16-21 `C86B0`
Group 2. 16-21 `C86B0`
Match 4
Full match 21-21 ``
Match 5
Full match 39-47 `02700000`
Group 2. 39-47 `02700000`
第1、2、5场多出00,第3场不知为何错过了20。如果你知道我错过了什么,请告诉我
您可以避免匹配 00
,方法是一次只允许两个数字中的一个 0
:
(?:[A-F1-9][A-F0-9]|[A-F0-9][A-F1-9]){1,4}(?=(?:..)*$)