递归火山软件开发平台

标题: DeepSeek 通配符搜索 [打印本页]

作者: fengyishen    时间: 昨天 20:59
标题: DeepSeek 通配符搜索
本帖最后由 fengyishen 于 2026-4-22 21:07 编辑

字节集通配符搜索类

一、概述

实现了在字节集中使用通配符进行模式搜索的功能,支持四种匹配模式,可广泛应用于文件内容搜索、协议解析、数据过滤等场景。


二、常量定义


常量
说明
匹配模式_普通0普通搜索,不处理通配符,等同于 寻找字节集
匹配模式_单通配符1使用 ? 匹配单个任意字节
匹配模式_多通配符2使用 * 匹配零个或多个任意字节
匹配模式_完全通配3同时支持 ? 和 *


三、公开方法

1. 查找字节集通配符

查找字节集通配符 (被搜索的字节集, 欲查找的模式, 匹配模式, 起始查找位置) -> 整数

功能:在字节集中查找第一个匹配通配符模式的位置
参数:
返回值:匹配位置的索引,未找到返回 -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