一种用识别关键字的正则表达的生成方法技术

技术编号:39805775 阅读:6 留言:0更新日期:2023-12-22 02:39
本发明专利技术公开了一种用识别关键字的正则表达的生成方法,属于数据处理技术领域,包括以下步骤:

【技术实现步骤摘要】
一种用识别关键字的正则表达的生成方法


[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”部分,会先匹配到关键字“selectByExample”,而导致该单词永远无法匹配到“selectByExampleAndRowBounds”这个关键字,从而出现匹配有错漏的情况


技术实现思路

[0004]为了克服现有技术存在的缺陷,本专利技术提供一种用识别关键字的正则表达的生成方法,以解决上述的问题

[0005]本专利技术解决其技术问题所采用的技术方案是:一种用识别关键字的正则表达的生成方法,包括以下步骤:
[0006]S1
:获取输入到关键字列表
keywords
的关键字,并生成树形数据结构;
[0007]S2
:根据树形数据结构生成正则表达式

[0008]值得说明的是,所述步骤
S1
中树形数据结构的生成过程包括:
[0009]S11
:初始化一个树节点作为树的根节点
root
;以及初始化处理字符数
charNum
,使
charNum
=1;
[0010]S12
:遍历关键词列表
keywords
,获取关键字,并将当前的关键字的字符长度与
charNum
比较;
[0011]若当前的关键字的字符长度小于
charNum
,则将当前的关键字从关键词列表
keywords
中移除,并在关键字的结尾加上
#end#
作为关键字片段
wordpice
加入到关键字片段集合
wordpiceSet
中;否则将当前的关键字在正序下的前
charNum
个字符作为关键字片段加入到关键字片段集合
wordpiceSet
中;
[0012]S13
:判断当前的字符数
charNum
是否为1,若是则执行步骤
S14
,若否则执行步骤
S15

[0013]S14
:将关键字片段集合
wordpiceSet
中每个关键字片段
wordpice
都在根节点
root
中创建对应的子节点,然后将字符数
charNum
加1后执行步骤
S12

[0014]S15
:遍历关键字片段集合
wordpiceSet
,获取关键字片段集合
wordpiceSet
中的关键字片段
wordpice

[0015]从根节点
root
开始,查找根节点
root
的子节点总文本
node Text
来前缀匹配关键字片段
wordpice
,然后按当前节点的文本
node Text
的字符长度截断匹配到的关键字片段
wordpice
,保留的该关键字片段
wordpice
的字符长度等于当前节点的文本
node Text
的字符长度的部分,以及得到该关键字片段
wordpice
超出当前节点的文本
node Text
的字符长度的剩余部分并覆盖更新关键字片段
wordpice
得到新的关键字片段
wordpice

[0016]更新后的关键字片段
wordpice
根据下一级子节点的文本
node Text
的字符长度截断,保留更新后关键字片段
wordpice
的字符长度等于该下一级子节点的文本
node Text
的字符长度的部分,以及得到更新后关键字片段
wordpice
超出下一级子节点的文本
node Text
的字符长度的剩余部分并覆盖更新关键字片段
wordpice
得到新的关键字片段
wordpice
;重复执行匹配直到找到该关键字片段
wordpice
的所有叶子节点为止;然后将字符数
charNum
加1后执行步骤
S12。
[0017]可选的,在所述步骤
S16
中,当下一级子节点的文本
node Text
前缀匹配到键字片段
wordpice
的剩余部分,且关键字片段
wordpice
的剩余部分的结尾后有
#end#
时,则在该关键字片段
wordpice
所属的最后的一个节点后增加一个包含有
#end#
的子节点;然后将字符数
charNum
加1后执行步骤
S12。
[0018]优选的,在所述步骤
S16
中,当下一级子节点的文本
node Text
能前缀匹配到关键字片段
wordpice
的剩余部分的前
n
‑1个字符时,则将该关键字片段
wordpice
所属的最后的一个节点的内容覆盖最后的一个节点的文本
node Text
,其中
n
为关键字片段
wordpice...

【技术保护点】

【技术特征摘要】
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后执行步骤

【专利技术属性】
技术研发人员:李宝君何玉华
申请(专利权)人:全通金信控股广东有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1