我正在尝试创建一个regexp,用于搜索文件中的所有12位十六进制值。例如:string 448699 => hex 343438363939.我现在的正则表达式是:
(r'3[0-9]\d{10}')
它将第一个字符与第二个0-9匹配,接下来的10个是任意随机数字。上面的十六进制是12位数字,从第一个字符开始,每隔一个字符是3.如何用regexp表达。我正在考虑以下几点,但不确定:
(r'3[0-9]3[0-9]3[0-9]3[0-9]3[0-9]3[0-9]')
答案 0 :(得分:3)
你真的很亲密。你想要的模式是:
(r'(?:3\d){6}')
编辑 - 正如Mike Pennington所指出的,十六进制数字可以包括字母A-F。我实际上并不确定“每隔一个数字是3”规则的目的,所以我按照你所描述的那样保留了规则。
答案 1 :(得分:2)
混乱至高无上......
如果您想将 ANY 6字节序列的转换结果与12个十六进制数字字符串(您要求的)进行匹配,则需要[0-9a-fA-F]{12}
。
如果要将 ASCII十进制数字的6字节序列转换为12位十六进制数字字符串(示例代码所示),则需要{{1} }。
Nitpick:您应该不使用(?:3[0-9]){6}
,就好像使用Unicode一样,它会拾取任何非ASCII十进制数字,这些数字不是十六进制数字(超过300种可能性)。
建议\d
检测从(3[0-9a-fA-F]){6}
中抽取的6字节字节序列,这不太可能是您想要的。
更新并要求澄清。
请考虑以下内容,让我们知道哪种模式实际上找到了您想要找到的内容,并且不会让“误报”通过大门。
0123456789:;<=>?
答案 2 :(得分:1)
你几乎就在那里......因为十六进制可以a-f
你需要包含那些......
(r'(3[0-9a-fA-F]){6}')