精易论坛

标题: C 写了个文本格式匹配算法 [打印本页]

作者: Timelord    时间: 2023-11-14 20:25
标题: C 写了个文本格式匹配算法
本帖最后由 Timelord 于 2023-11-15 19:51 编辑

具体说明可以看源码根目录下的readme,我在此简单说明


本算法用途是判断一串文本是否符合预定义的格式结构,当然你也可以用正则,但这个更简单
举例说明,如下表达式:
{[48,48]{[49,49]}{[32,32]{[65,90;97,122]}}}[65,65]

匹配形如以下格式的文本
0111 abc01 defA

每个中括号包裹的对象为asc码范围,对应带匹配文本中的一个字符,花括号包裹的对象结构可以在带匹配文本的对应位置出现多次。
具体原理九十构建匹配树,再将树应用到待匹配文本上。


至于这个有什么用,我是用来匹配合法的http请求文本结构,格式文本如下:
{[65,90]}[32,32]{[33,126]}[32,32]{[33,126]}[13,13][10,10]{{[65,90;97,122]}[58,58]{[32,126]}[13,13][10,10]}[13,13][10,10]

易语言调用效果如下:






  
窗口程序集名保 留  保 留备 注
窗口程序集_启动窗口   
子程序名返回值类型公开备 注
_按钮1_被单击  
变量名类 型静态数组备 注
tree整数型 
ret整数型 
tree = fexp_build_tree (yformat.内容)
ret = fexp_match_text (ytext.内容, tree)
判断 (ret = 0)
信息框 (“yes”, 0, , )
信息框 (“no”, 0, , )
fexp_free_tree (tree)


FormatExpect_v1.0.zip (1.84 MB, 下载次数: 6)


源码后续更新放在 https://github.com/myxewd/FormatExpect



作者: 虚vs伪    时间: 2023-11-14 21:26
看的好累
作者: Timelord    时间: 2023-11-14 21:36
虚vs伪 发表于 2023-11-14 21:26
看的好累

本来想着练手的就没写注释
作者: ZHuanR    时间: 2023-11-14 22:04
新技能已get√
作者: 初夏喔    时间: 2023-11-15 01:03
你这玩意太反人类了。{[48,48]{[49,49]}{[32,32]{[65,90;97,122]}}}[65,65] 这一大串看上去比正则还难理解。假如这串字符你放2个月后,你再看看,你觉得你能看懂吗。
作者: 一指温柔    时间: 2023-11-15 08:47
感谢分享
作者: pipicool    时间: 2023-11-15 09:14
学习一下
作者: bianyuan456    时间: 2023-11-15 10:23
已经顶贴,感谢您对论坛的支持!
作者: 396384183    时间: 2023-11-15 20:13
支持开源~!感谢分享
作者: xxk边    时间: 2023-11-16 12:43
已经顶贴,感谢您对论坛的支持!
作者: dhrjgzs    时间: 2023-11-18 17:19
666666666666666
作者: static101    时间: 2023-11-20 14:05
C代码没有注释看的头大
作者: ctry78985    时间: 2023-11-21 12:29
感谢分享




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4