我正在尝试为字节序列创建一个正则表达式。序列是来自用户的输入字符串,例如:
00 a5 88
正则表达式应检查输入是否是正确的字节序列。所以这不应该是可能的:
00 0 66
但这两个应该:
a b
a 05 b
到目前为止,我有这个正则表达式:
(^[a-fA-F\\d]{1,2})((\\s[a-fA-F\\d]{2})*)
问题是结束。
这适用于01
或45 45
或2
但不适用于45 4
或4 5
或4 00 55 4
我尝试了这个:(^[a-fA-F\\d]{1,2})((\\s[a-fA-F\\d]{2})*)([a-fA-F\\d]{1,2}$)
但我的想法并没有发挥作用。
Ihe输入应该是十六进制字节,因为之后我在转储字符串中搜索此输入,看起来像这样:
这对我很有用:
BYTE_REGEX = "(^(\\p{XDigit}{1,2}))(\\s\\p{XDigit}{2})*(\\s\\p{XDigit})?";
答案 0 :(得分:0)
这是128字节的正则表达式,表示为十六进制:
^([0-9|a-f|A-F][0-9|a-f|A-F]){1,64}$
如果你想要X字节,只需将X / 2值放在正则表达式中:
^([0-9|a-f|A-F][0-9|a-f|A-F]){1,X/2}$
答案 1 :(得分:0)
我应该使用的东西:
BYTE_REGEX ="(^ \ s *(\ p {XDigit} {1,2}))(\ s + \ p {XDigit} {2})*(\ s + \ p {XDigit})? &#34 ;;
这是你自己的一个小变化,允许:
因为转储通常每行显示16个字节,按4或8分组,组之间的间隔较大。