一种hyperscan API使用(1)
hyperscan:
编译和安装:http://www.cnblogs.com/zzqcn/p/4900643.html
简单介绍:http://www.cnblogs.com/zzqcn/p/4898620.html
使用:正则编译-》匹配
1.编译
本次使用
hs_error_t hs_compile_ext_multi(const char * const *expressions, // 正则表达式数组
const unsigned *flags, // 每个正则的flag选项,本次使用HS_FLAG_SINGLEMATCH ,可用 | 相加
const unsigned *ids, // 每个正则表达式的唯一编号,匹配正则后会返回这个id
const hs_expr_ext * const *ext, // 不知道干啥的
unsigned elements, // 个数
unsigned mode, // 模式,按上面第二个链接介绍,本次使用HS_MODE_BLOCK
const hs_platform_info_t *platform, // NULL 也不知道干啥的
hs_database_t **db, // 编译后输出 hs_dababase_t
hs_compile_error_t **error); // 错误信息
hs_error_t hs_alloc_scratch(const hs_database_t *db, hs_scratch_t **scratch) ;
生成scratch临时数据,编译的时候好像没用到。根据db生成。
2.序列化和反序列化
可以把db生成文件供外部使用
API:
1)序列化:
hs_error_t hs_serialize_database(const hs_database_t *db, //db数据
char **bytes, // 序列化后的数据(输出)
size_t *serialized_length) // 序列化后的长度(输出)
2)反序列化
hs_error_t hs_deserialize_database(const char *bytes, //从文件中读到的序列化数据
const size_t length, //长度
hs_database_t **db) // 反序列化得到的db数据(输出)
3.匹配
生成临时数据
hs_scratch_t* g_scratch = NULL;
hs_error_t hs_err = hs_alloc_scratch(hs_db, &g_scratch); //hs_db是反序列化得到的db数据
匹配配API:
hs_error_t hs_scan(const hs_database_t *db, //db数据
const char *data, //匹配母串
unsigned length, //长度
unsigned flags, // 0
hs_scratch_t *scratch, // 临时数据
match_event_handler onEvent, // 回调函数,匹配到会进入此函数
void *userCtx) // 传给回调函数的变量
回调函数:
typedef int (*match_event_handler)(unsigned int id, // 匹配到的id,由编译的时候控制,用到此id。
unsigned long long from, //
unsigned long long to, // from和to可能是匹配到的位置信息
unsigned int flags, // 传入的flag吧?
void *context); // 参数
如果匹配到了,会得到正则的id,后边在进行操作。
一种hyperscan API使用(1)的更多相关文章
- 详解 UWP (通用 Windows 平台) 中的两种 HttpClient API
UWP (通用 Windows 平台) 应用开发者在构建通过 HTTP 与 Web 服务或服务器断点交互的应用时,有多种 API 可以选择.要在一个托管 UWP 应用中实现 HTTP 客户端角色,最常 ...
- 五种开源API网关实现组件对比
五种开源API网关实现组件对比 API 网关一些实现 使用一个组件时,尤其是这种比较流行的架构,组件肯定存在开源的,我们不必自己去从零开始去实现一个网关,自己开发一个网关的工作量是相当可观的, ...
- javaservlet处理四种常用api请求get,put,post,delete
一般在网站搭建中servlet只需处理post,get请求便足已.本篇注重使用javaweb编写restful风格api,在servlet中对四种常用请求进行处理. 在api中对于一个请求要做的通常是 ...
- 一种用于 API 的查询语言-GraphQL
GitHub地址 官网地址 中文网址
- 朱晔的互联网架构实践心得S2E5:浅谈四种API设计风格(RPC、REST、GraphQL、服务端驱动)
Web API设计其实是一个挺重要的设计话题,许多公司都会有公司层面的Web API设计规范,几乎所有的项目在详细设计阶段都会进行API设计,项目开发后都会有一份API文档供测试和联调.本文尝试根据自 ...
- 几种部署Goku API Gateway的方式,最快一分钟可使用上网关
本文将介绍几种部署Goku API Gateway的方式,最快一分钟可使用上为网关,详情请看全文. 什么是Goku API Gateway? Goku API Gateway (中文名:悟空 API ...
- 抛弃jQuery:DOM API之选择元素
原文链接:http://blog.garstasio.com/you-dont-need-jquery/selectors/ 我的Blog:http://cabbit.me/you-dont-need ...
- C#计算一段程序运行时间的三种方法
第一种方法利用System.DateTime.Now: static void SubTest() { DateTime beforDT = System.DateTime.Now; //耗时巨大的代 ...
- hibernate常用API详解
根据个人使用Hibernate的经验,介绍一下Hibernate的多种不同的查询和CUD操作,这些东西在日常开发中非常常用,希望对大家有所帮助. 以下示例均以两张表为例:member和userinfo ...
随机推荐
- Ubuntu18.04下安装搜狗输入法
Ubuntu18.04下安装搜狗输入法 第一步:安装 fcitx输入框架 sudo apt-get install fcitx 第二步:在官网下载 Linux 版本搜狗输入法 https://piny ...
- 图标跟着摄像机(Camera)orthographicSize的值改变大小
默认摄像机(Camera)orthographicSize默认大小为51 #region //滚轮滑动,大地图放大缩小 ) { if (screenView_1Main.myEquipSearch.i ...
- AVR 嵌入式单片机芯片的中断系统介绍
body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gra ...
- [Linux] Configure iSCSI on Linux5 (both target and initiator)
********************************************************************************Target************** ...
- unity解压缩zip发布后的一些问题
前段时间项目需要,搞了下zip的解压缩问题,也是利用ICSharpCode.SharpZipLib.dll来处理的zip,这里说下之前遇到的坑(这里提供我用的这个库ICSharpCode.SharpZ ...
- node.js学习6---第三方依赖(模块或者说是包)的导入 npm 以及 cnpm命令的使用
npm命令用于导入node.js的第三方包,相当于java中使用maven来导入第三方依赖: 1.npm init -y 命令:在命令窗口中执行后,会出现如下的json文件: 右边记录了安装的第三方包 ...
- ASP.NET 性能监控工具和优化技巧
转载自:http://blog.haoitsoft.com/index.php/archives/657 ASP.NET 性能监控工具和优化技巧 发表回复 为了阐明准确甄别性能问题的重要性,下面列举了 ...
- nodejs02-fs模块
文件操作模块:fs-filesystem(异步) //readFile(文件名,回调函数) fs.readFile(); fs.readFile("aaa.txt",functio ...
- java 接口1
接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明.一个类通过继承接口的方式,从而来继承接口的抽象方法. 接口并不是类,编写接口 ...
- 远程桌面服务当前正忙,因此无法完成您尝试执行的任务-win2008R2
远程桌面服务当前正忙,因此无法完成您尝试执行的任务,近来我服务器出现这情况, 到达主机房看主机...不可以登陆,也没有登陆框.只能关机. 在微软找到的原因是:Csrss.exe 进程和某些应用程序 ( ...