首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RegEx在对所有字符2乘2分组时排除集合

RegEx在对所有字符2乘2分组时排除集合
EN

Stack Overflow用户
提问于 2017-08-24 13:58:22
回答 1查看 54关注 0票数 0

我想修改一个带有模式的二进制文件。我已经用xxd (来自包vim)将文件转换为一个普通的十六进制文件。普通文件如下所示(只有1行没有尾随LF):

代码语言:javascript
复制
$ xxd -ps file.bin | tr -d '\n' | tee out.txt
3a0a5354...

我希望删除与sed原始文件中的\x01[^\xFF]*\xFF匹配的所有模式(一个开始令牌和一个关闭令牌以及它们之间的所有东西,除了另一个结束令牌),但是不是这样工作的。

示例输入和所需匹配:

代码语言:javascript
复制
020202020101010101feeffeefff0000...
        ~~~~~~~~~~~~~~~~~~~~    

我正考虑这么做

代码语言:javascript
复制
sed 's/regex//g' in.file > out.file

现在,我试图匹配所有的聊天字符2乘2,而不包括有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-24 15:21:42

这应该能起作用:

((..)|01([0-9a-e][0-9a-f]|[0-9a-f][0-9a-e])*ff)*

也就是说,我们匹配一对十六进制数字,其中第一个或第二个数字可以是f,但不能两者都是。在周围的上下文中,我们还必须一次匹配所有两个字符,以确保我们的匹配从偶数开始。

显然,您必须添加一些实际上从输出中移除内部组的内容,这是regex引擎特有的。我只是在发了这篇文章之后才意识到,简单的s/不会做。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45863598

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档