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