DeepSeek 通配符搜索
本帖最后由 fengyishen 于 2026-4-22 21:07 编辑字节集通配符搜索类
一、概述
实现了在字节集中使用通配符进行模式搜索的功能,支持四种匹配模式,可广泛应用于文件内容搜索、协议解析、数据过滤等场景。
二、常量定义
常量值说明
匹配模式_普通0普通搜索,不处理通配符,等同于 寻找字节集
匹配模式_单通配符1使用 ? 匹配单个任意字节
匹配模式_多通配符2使用 * 匹配零个或多个任意字节
匹配模式_完全通配3同时支持 ? 和 *
三、公开方法
1. 查找字节集通配符
查找字节集通配符 (被搜索的字节集, 欲查找的模式, 匹配模式, 起始查找位置) -> 整数
功能:在字节集中查找第一个匹配通配符模式的位置参数:
[*]被搜索的字节集:源数据
[*]欲查找的模式:包含通配符的搜索模式
[*]匹配模式:匹配模式常量(默认完全通配)
[*]起始查找位置:开始搜索的位置(默认0)
返回值:匹配位置的索引,未找到返回 -1
2. 查找所有匹配
查找所有匹配 (被搜索的字节集, 欲查找的模式, 匹配模式, 结果位置数组) -> 整数
功能:查找所有匹配通配符模式的位置参数:
[*]被搜索的字节集:源数据
[*]欲查找的模式:包含通配符的搜索模式
[*]匹配模式:匹配模式常量(默认完全通配)
[*]结果位置数组:整数数组,用于存储所有匹配位置
返回值:匹配到的数量
四、支持的匹配示例
模式源数据匹配结果
"World""Hello World 123"位置 6
"?ello""Hello World 123"位置 0(匹配 "Hello")
"Hello?World""Hello World 123"位置 0(? 匹配空格)
"H*o""Hello World 123"位置 0
"He*ld""Hello World 123"位置 0
"*123""Hello World 123"位置 12
"H?*o""Hello World 123"位置 0
"***"任意数据返回起始位置
五、测试预期
========== 测试字节集通配符搜索 ==========
测试数据长度:, 15
测试数据内容:, Hello World 123
========== 测试开始 ==========
[测试1] 普通搜索 "World" -> 位置:, 6,(期望: 6)
[测试2] 普通搜索 "abc" -> 位置:, -1,(期望: -1)
[测试3] 单通配符搜索 "?ello" -> 位置:, 0,(期望: 0, 匹配 Hello)
[测试4] 单通配符搜索 "Hello?World" -> 位置:, 0,(期望: 0)
[测试5] 多通配符搜索 "H*o" -> 位置:, 0,(期望: 0, 匹配 Hello)
[测试6] 多通配符搜索 "He*ld" -> 位置:, 0,(期望: 0, 匹配 Hello World)
[测试7] 多通配符搜索 "*123" -> 位置:, 12,(期望: 12)
[测试8] 完全通配符搜索 "H?*o" -> 位置:, 0,(期望: 0)
[测试9] 完全通配符搜索 "*?o?d*" -> 位置:, 0,(期望: 0)
[测试10] 查找所有匹配 "l" -> 匹配数量:, 3
[测试11] 从位置3开始搜索 "l" -> 位置:, 3,(期望: 3)
[测试12] 纯通配符模式 "***" -> 位置:, 0,(期望: 0)
========== 测试完成 ==========
五、源码下载
**** Hidden Message *****
学习学习
页:
[1]