【技术实现步骤摘要】
一种从正则表达式中抽取最长精确子串的方法
本专利技术涉及计算机信息处理与识别
,具体涉及一种从正则表达式中抽取最长精确子串的方法。
技术介绍
在海量信息的背景下,网络应用对匹配引擎的性能提出了更高的要求[1]。深度包检测(DeepPacketInspection)技术[2]是一种先进的包过滤技术,其在学术界有着广泛的研究[3,4,5,6]。通过对数据包进行内容分析,可以识别并阻止特定的数据包。深度包检测不仅是在网络入侵领域有着重要的应用,在很多其他领域如反病毒系统,垃圾邮件过滤和高性能防火墙等领域也有广泛的应用[7,8,9,10]。由于正则表达式具有强大的语言描述能力,正则表达式匹配(regularexpressionmatching)在DPI的场景中有着广泛的应用,是网络内容安全分析的关键技术之一。正则表达式匹配主要依靠有限状态的自动机完成。有限状态自动机分为两类:一类是非确定型有限自动机(NFA),一类是确定型有限自动机(DFA)。基于NFA的匹配算法预处理时间短,存储空间小,但是线上匹配时间复杂度高。相反,基于DFA的匹配算法只需要扫描一遍待检测文档, ...
【技术保护点】
1.一种从正则表达式中抽取最长精确子串的方法,步骤包括:构造正则表达式的解析树,获得可以进行解析树遍历访问的根节点;将解析树的CONCAT路径上的CONCAT节点的边都进行切分,把解析树切分成多个子树,每个子树即为一个基本单元,CONCAT路径是指从根节点出发的路径上的节点都是操作符;新建一个节点作为精确串锚点,用以存储精确串,同时记录该精确串锚点的左右邻居,该精确串为只有单个字符的基本单元或者由连续CONCAT操作符切分的字符拼接而成;通过对精确串锚点的左邻居和右邻居分别计算后缀和前缀,通过对后缀、精确串、前缀的拼接即可得到基于该精确串锚点抽取的精确子串,再通过对所有精确 ...
【技术特征摘要】
1.一种从正则表达式中抽取最长精确子串的方法,步骤包括:构造正则表达式的解析树,获得可以进行解析树遍历访问的根节点;将解析树的CONCAT路径上的CONCAT节点的边都进行切分,把解析树切分成多个子树,每个子树即为一个基本单元,CONCAT路径是指从根节点出发的路径上的节点都是操作符;新建一个节点作为精确串锚点,用以存储精确串,同时记录该精确串锚点的左右邻居,该精确串为只有单个字符的基本单元或者由连续CONCAT操作符切分的字符拼接而成;通过对精确串锚点的左邻居和右邻居分别计算后缀和前缀,通过对后缀、精确串、前缀的拼接即可得到基于该精确串锚点抽取的精确子串,再通过对所有精确串锚点的计算,得到最长精确子串。2.如权利要求1所述的方法,其特征在于,利用最长子串抽取方法获得最长精确子串,该方法为:输入正则表达式r,令L(r)为该正则表达式描述的语言集合,令P为L(r)中每个子串的公共子串集合,则抽取集合P中最长的子串即为最长精确子串。3.如权利要求1所述的方法,其特征在于,正则表达式的解析树中,每个叶节点为使用∑∪{ε}中的一个字符来标识,每个中间节点为操作符。4.如权利要求1或3所述的方法,其特征在于,操作符包括通配符操作符“·”、选择操作符“|”、重复操作符“+”、重复操作符“*”。5.如权利要求1所述的方法,其特征在于,计算后缀和前缀的方法如下:令getPrefix表示节点前缀抽取方法,prefix表示抽取到的前缀,node表示正在被处理的节点,node节点在解析树中有left和right两个孩子节点,则计算前缀的方法包括:1.case?prefix=NULL,其中?表示0或1个,表示因有不存在的可能,故为NULL;2.case*prefix=NULL,其中*表示0个或多个,表示因有不存在的可能,故为NULL;3.casenormal_charprefix=normal_char,表示当字符是一确定的字符时,则前缀即为该字符;4.case+prefix=getPrefix(node.left),其中+表示1个或多个,表示node.left至少重复一次,对node.lef...
【专利技术属性】
技术研发人员:卢毓海,王翔,刘燕兵,谭建龙,郭莉,
申请(专利权)人:中国科学院信息工程研究所,
类型:发明
国别省市:北京,11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。