【技术实现步骤摘要】
一种用识别关键字的正则表达的生成方法
[0001]本专利技术涉及数据处理
,特别涉及一种用识别关键字的正则表达的生成方法
。
技术介绍
[0002]在
java
语言中,目前会通过一段正则表达式去识别一段文本中的一些关键字,比如想识别
dao
层的方法名中,是否有以下关键字:
selectAll、selectCount、selectOne、selectByExample、selectCountByExample、selectByExampleAndRowBounds、selectByRowBounds
和
select
,通常程序员会为此类业务写如下的正则表达式:“selectAll|selectCount|selectOne|selectByExample|selectCountByExample|selectBy ExampleAndRowBounds|selectByRowBounds|select”,这种方式会存在以下两个问题:
[0003]1.
如图1所示,该方式的匹配方式是每个单词逐一匹配,就会导致关键字识别率不高;
2.
如图2所示,以以上的正则表达式为例,其难以精确匹配到“selectByExampleAndRowBounds”这个关键字,输入的单词“selectByExampleAndRowBounds”的“selectByExample”部分,会先匹配到关键字“selectByExampl
【技术保护点】
【技术特征摘要】
1.
一种用识别关键字的正则表达的生成方法,其特征在于,包括以下步骤:
S1
:获取输入到关键字列表
keywords
的关键字,并生成树形数据结构;
S2
:根据树形数据结构生成正则表达式
。2.
根据权利要求1所述的一种用识别关键字的正则表达的生成方法,其特征在于,所述步骤
S1
中树形数据结构的生成过程包括:
S11
:初始化一个树节点作为树的根节点
root
;以及初始化处理字符数
charNum
,使
charNum
=1;
S12
:遍历关键词列表
keywords
,获取关键字,并将当前的关键字的字符长度与
charNum
比较;若当前的关键字的字符长度小于
charNum
,则将当前的关键字从关键词列表
keywords
中移除,并在关键字的结尾加上
#end#
作为关键字片段
wordpice
加入到关键字片段集合
wordpiceSet
中;否则将当前的关键字在正序下的前
charNum
个字符作为关键字片段加入到关键字片段集合
wordpiceSet
中;
S13
:判断当前的字符数
charNum
是否为1,若是则执行步骤
S14
,若否则执行步骤
S15
;
S14
:将关键字片段集合
wordpiceSet
中每个关键字片段
wordpice
都在根节点
root
中创建对应的子节点,然后将字符数
charNum
加1后执行步骤
S12
;
S15
:遍历关键字片段集合
wordpiceSet
,获取关键字片段集合
wordpiceSet
中的关键字片段
wordpice
;从根节点
root
开始,查找根节点
root
的子节点总文本
node Text
来前缀匹配关键字片段
wordpice
,然后按当前节点的文本
node Text
的字符长度截断匹配到的关键字片段
wordpice
,保留的该关键字片段
wordpice
的字符长度等于当前节点的文本
node Text
的字符长度的部分,以及得到该关键字片段
wordpice
超出当前节点的文本
node Text
的字符长度的剩余部分并覆盖更新关键字片段
wordpice
得到新的关键字片段
wordpice
;更新后的关键字片段
wordpice
根据下一级子节点的文本
node Text
的字符长度截断,保留更新后关键字片段
wordpice
的字符长度等于该下一级子节点的文本
node Text
的字符长度的部分,以及得到更新后关键字片段
wordpice
超出下一级子节点的文本
node Text
的字符长度的剩余部分并覆盖更新关键字片段
wordpice
得到新的关键字片段
wordpice
;重复执行匹配直到找到该关键字片段
wordpice
的所有叶子节点为止;然后将字符数
charNum
加1后执行步骤
【专利技术属性】
技术研发人员:李宝君,何玉华,
申请(专利权)人:全通金信控股广东有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。