javascript - 正则表达式在最后一场比赛后获得异常
问题描述
我在 javascript 中有这个正则表达式来搜索字符串中的十六进制代码
const regex = /([a-f0-9]{8})/g
这工作正常,但当然它没有得到最后一段十六进制代码,因为它更短,在我的情况下是732e
. 我怎么能接近它来寻找最后一行的异常?最后一行和倒数第二行看起来像这样。我想避免失去规则,因为我害怕匹配不是十六进制代码的东西
45270a70 36313837 0a615327 756e6930
34324627 0a703631 38380a61 732e
它是一个二进制文件,它被转换为十六进制代码,然后它被转换为 ASCII,而 ASCII 是我需要匹配的十六进制代码。我这样做了,除了最后一个例外。所以它是垃圾和字符串之间的十六进制代码。
谢谢!
解决方案
你可以使用这个正则表达式:
/\b[a-f0-9]{4}(?:[a-f0-9]{4}\b|[a-f0-9]{0,4}$)/gi
这将允许一行中最后一个字符串的异常仅匹配 4-8 个十六进制数字。对于所有其他情况,它必须仅匹配 8 个十六进制数字。
正则表达式详细信息:
\b
: 字边界[a-f0-9]{4}
: 匹配 4 个十六进制数字(?:
:启动非捕获组[a-f0-9]{4}
: 匹配 4 个十六进制数字\b
: 断言单词边界|
: 或者[a-f0-9]{0,4}
: 匹配 0 到 4 个十六进制数字$
: 结尾
)
:结束非捕获组
推荐阅读
- java - Error using Rational Asset Manager with Oracle 11g
- web-crawler - 如何使用 robots.txt 处理不同子域的网络抓取 - 允许 abc.sample.com 但不允许 cde.sample.com
- postgresql - Postgres:if-else 条件取决于提示,在通过 \i 调用的 .sql 文件中
- pandas - 如何在熊猫中创建多索引数据框?
- python - 为什么我不能在 Django orm 中从我的数据库中检索日期时间值?
- omnipay - 我正在尝试将cyberSource 与omnipay 库集成。但是没有生成reference_number请求参数
- reactjs - 读取反应函数内的标签主体
- laravel - 如何设置/获取复选框的值
- android - 无法通过 StickyRecyclerView 中的即将到来的标题数据推送标题数据
- visual-studio-code - 使用 FTP-SIMPLE 扩展将 vscode 连接到我的远程服务器