递归火山软件开发平台
标题: DeepSeek 通配符搜索 [打印本页]
作者: fengyishen 时间: 昨天 20:59
标题: 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)
========== 测试完成 ==========
五、源码下载
作者: zlk 时间: 昨天 23:52
学习学习
| 欢迎光临 递归火山软件开发平台 (https://bbs.voldp.com/) |
Powered by Discuz! X3.4 |