0

是否可以使用单个正则表达式匹配字符串,我可以在其中定义它们在文本中位置的约束?

例如,给定一个十六进制编码文件,我想匹配对应于十六进制表示大于 0x40 的字符的十六进制表示。位置约束应该是匹配应该从偶数位置开始。例如,034673911921应该匹配 at 46, 7391但不匹配 at 92

4

3 回答 3

1

可以通过两个易于理解的步骤完成:首先将其拆分为字段,然后检查大小。这是一个例子sed,我希望它会有所帮助:

echo 034673911921 | sed -nr 's7([0-9][0-9])/\1 /gp' | sed -n 's/[0-3][0-9]//gp'
于 2012-07-02T14:10:27.687 回答
1

你可以使用这样的东西:

^(?:..)*([4-9A-Fa-f][\da-fA-F])

这将确保在您的捕获组之前有偶数个字符。

于 2012-07-02T14:02:10.277 回答
1

您可以在正则表达式中对位置进行编码。对于仅从偶数位置开始的示例,可能类似于

/^(?:..)*([4-9a-fA-F].)/
于 2012-07-02T14:02:21.140 回答