是否可以使用单个正则表达式匹配字符串,我可以在其中定义它们在文本中位置的约束?
例如,给定一个十六进制编码文件,我想匹配对应于十六进制表示大于 0x40 的字符的十六进制表示。位置约束应该是匹配应该从偶数位置开始。例如,034673911921
应该匹配 at 46
, 73
,91
但不匹配 at 92
。
是否可以使用单个正则表达式匹配字符串,我可以在其中定义它们在文本中位置的约束?
例如,给定一个十六进制编码文件,我想匹配对应于十六进制表示大于 0x40 的字符的十六进制表示。位置约束应该是匹配应该从偶数位置开始。例如,034673911921
应该匹配 at 46
, 73
,91
但不匹配 at 92
。
可以通过两个易于理解的步骤完成:首先将其拆分为字段,然后检查大小。这是一个例子sed
,我希望它会有所帮助:
echo 034673911921 | sed -nr 's7([0-9][0-9])/\1 /gp' | sed -n 's/[0-3][0-9]//gp'
你可以使用这样的东西:
^(?:..)*([4-9A-Fa-f][\da-fA-F])
这将确保在您的捕获组之前有偶数个字符。
您可以在正则表达式中对位置进行编码。对于仅从偶数位置开始的示例,可能类似于
/^(?:..)*([4-9a-fA-F].)/