CN114385868B - 一种正则表达式生成方法、装置、介质及设备 - Google Patents
一种正则表达式生成方法、装置、介质及设备 Download PDFInfo
- Publication number
- CN114385868B CN114385868B CN202111484491.8A CN202111484491A CN114385868B CN 114385868 B CN114385868 B CN 114385868B CN 202111484491 A CN202111484491 A CN 202111484491A CN 114385868 B CN114385868 B CN 114385868B
- Authority
- CN
- China
- Prior art keywords
- substring
- regular expression
- spliced
- processed
- character string
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90344—Query processing by using string matching techniques
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Machine Translation (AREA)
Abstract
本发明公开了一种正则表达式生成方法、装置、介质及设备,包括:获取待处理字符串,并获取待处理字符串的原始正则表达式;响应于用户的子串选择指令,获取待处理字符串的若干待选择子串;将若干待选择子串中的第一个待选择子串作为选择子串,对待处理字符串进行分割处理,获得第一子串、第二子串及选择子串;响应于用户的子串类型选择指令,获取选择子串的类型,并根据选择子串的类型,获取对应的待拼接正则表达式生成策略,以根据待拼接正则表达式生成策略得到待拼接正则表达式;将原始正则表达式和待拼接正则表达式依次进行拼接,得到待处理字符串的最终正则表达式。采用本发明实施例能够减少出现误匹配的情况,提高匹配准确率。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种正则表达式生成方法、装置、介质及设备。
背景技术
在现有的数据提取技术,利用正则表达式提取是较为常用的方式。一般可以通过正则表达式生成工具如Txt2re来生成正则表达式,但其对结构相近的字符串容易造成误匹配,使得准确率较低。
发明内容
本发明提供一种正则表达式生成方法、装置、介质及设备,以解决现有技术对结构相近的字符串容易造成误匹配的问题,本发明通过增加选择子串的类型选择,能够减少出现误匹配的情况,提高匹配的准确率,并减少性能消耗。
为实现上述目的,本发明实施例提供了一种正则表达式生成方法,包括:
获取待处理字符串,并获取所述待处理字符串的原始正则表达式;
响应于用户的子串选择指令,获取所述待处理字符串的若干待选择子串;
将若干所述待选择子串中的第一个所述待选择子串作为选择子串,并以所述选择子串为界,对所述待处理字符串进行分割处理,获得在所述待处理字符串中的所述选择子串之前的第一子串、所述选择子串之后的第二子串,及所述选择子串;
响应于用户的子串类型选择指令,获取所述选择子串的类型,并根据所述选择子串的类型,获取对应的待拼接正则表达式生成策略,以根据所述待拼接正则表达式生成策略得到待拼接正则表达式;其中,所述选择子串的类型包括期望获取子串及非期望获取子串;
将所述原始正则表达式和所述待拼接正则表达式依次进行拼接,得到所述待处理字符串的最终正则表达式。
作为上述方案的改进,当所述选择子串的类型为所述非期望获取子串时,所述待拼接正则表达式生成策略包括:
判断所述第一子串是否为空,若是,将所述选择子串作为待拼接正则表达式,否则,根据预设的第一规则生成待拼接正则表达式。
作为上述方案的改进,所述根据预设的第一规则生成待拼接正则表达式,包括:
获取所述第一子串中的尾字符,将所述尾字符作为第一分隔符,计算所述第一分隔符在所述第一子串中出现的次数n;
将非所述第一分隔符的通配符与所述第一分隔符作为第三子串,获取限定n次的所述第三子串,以将限定n次的所述第三子串作为待拼接正则表达式。
作为上述方案的改进,当所述选择子串的类型为所述期望获取子串时,所述待拼接正则表达式生成策略包括:
获取所述第二子串的首字符,并将所述首字符作为第二分隔符;
判断所述选择子串中是否包含所述第二分隔符,若否,将非所述第二分隔符的通配符和第二分隔符依次进行拼接,得到第一拼接子串,以将所述第一拼接子串作为待拼接正则表达式,否则,根据预设的第二规则生成待拼接正则表达式。
作为上述方案的改进,所述根据预设的第二规则生成待拼接正则表达式,包括:
计算所述第二分隔符在所述选择子串中出现的次数i;
将非所述第二分隔符的通配符与所述第二分隔符作为第四子串,获取限定i次的所述第四子串,将限定i次的所述第四子串与所述第二分隔符依次进行拼接,得到第二拼接子串,以将所述第二拼接子串作为待拼接正则表达式。
作为上述方案的改进,在将所述原始正则表达式和所述待拼接正则表达式依次进行拼接,得到所述待处理字符串的最终正则表达式之后,还包括:
判断所述第二子串是否还包含任一所述待选择子串,若是,将所述第二子串作为所述待处理字符串,以对所述第二子串进行下一次迭代处理,否则,输出所述最终正则表达式。
作为上述方案的改进,所述获取待处理字符串,并获取所述待处理字符串的原始正则表达式,包括:
获取待处理字符串,并判断所述待处理字符串的类型;
当判断到所述待处理字符串为初始输入的待处理字符串时,所述待处理字符串的原始正则表达式为空;
当判断到所述待处理字符串为经过迭代处理的待处理字符串时,所述待处理字符串的原始正则表达式为所述最终正则表达式。
为实现上述目的,本发明实施例还提供了一种正则表达式生成装置,包括:
待处理字符串获取模块,用于获取待处理字符串,并获取所述待处理字符串的原始正则表达式;
待选择子串获取模块,用于响应于用户的子串选择指令,获取所述待处理字符串的若干待选择子串;
待处理字符串分割模块,用于将若干所述待选择子串中的第一个所述待选择子串作为选择子串,并以所述选择子串为界,对所述待处理字符串进行分割处理,获得在所述待处理字符串中的所述选择子串之前的第一子串、所述选择子串之后的第二子串,及所述选择子串;
待拼接正则表达式生成模块,用于响应于用户的子串类型选择指令,获取所述选择子串的类型,并根据所述选择子串的类型,获取对应的待拼接正则表达式生成策略,以根据所述待拼接正则表达式生成策略得到待拼接正则表达式;其中,所述选择子串的类型包括:期望获取子串及非期望获取子串;
最终正则表达式获取模块,用于将所述原始正则表达式和所述待拼接正则表达式依次进行拼接,得到所述待处理字符串的最终正则表达式。
为实现上述目的,本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序;其中,所述计算机程序在运行时控制所述计算机可读存储介质所在的设备执行上述所述的正则表达式生成方法。
为实现上述目的,本发明实施例提供了一种终端设备,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器在执行所述计算机程序时实现上述所述的正则表达式生成方法。
与现有技术相比,本发明实施例提供的一种正则表达式生成方法、装置、介质及设备,通过能够增加选择子串的类型选择,获取所述选择子串的类型,并根据所述选择子串的类型,获取对应的待拼接正则表达式生成策略,以根据所述待拼接正则表达式生成策略得到待拼接正则表达式;将所述原始正则表达式和所述待拼接正则表达式依次进行拼接,得到所述待处理字符串的最终正则表达式。由此可见,本发明实施例能够生成更通用的、符合用户需要的正则表达式,同时提高匹配的准确率和减少生成的正则表达式的匹配性能消耗。
附图说明
图1是本发明实施例提供的一种正则表达式生成方法的流程图;
图2是本发明实施例提供的一种正则表达式生成方法的又一流程图;
图3是本发明实施例提供的一种正则表达式生成装置的结构框图;
图4是本发明实施例提供的一种终端设备的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图1,图1是本发明实施例提供的一种正则表达式生成方法的流程图,所述正则表达式生成方法,包括:
S1、获取待处理字符串,并获取所述待处理字符串的原始正则表达式;
S2、响应于用户的子串选择指令,获取所述待处理字符串的若干待选择子串;
S3、将若干所述待选择子串中的第一个所述待选择子串作为选择子串,并以所述选择子串为界,对所述待处理字符串进行分割处理,获得在所述待处理字符串中的所述选择子串之前的第一子串、所述选择子串之后的第二子串,及所述选择子串;
S4、响应于用户的子串类型选择指令,获取所述选择子串的类型,并根据所述选择子串的类型,获取对应的待拼接正则表达式生成策略,以根据所述待拼接正则表达式生成策略得到待拼接正则表达式;其中,所述选择子串的类型包括期望获取子串及非期望获取子串;
S5、将所述原始正则表达式和所述待拼接正则表达式依次进行拼接,得到所述待处理字符串的最终正则表达式。
具体地,在步骤S1中,所述获取待处理字符串,并获取所述待处理字符串的原始正则表达式,包括:
获取待处理字符串,并判断所述待处理字符串的类型;
当判断到所述待处理字符串为初始输入的待处理字符串时,所述待处理字符串的原始正则表达式为空;
当判断到所述待处理字符串为经过迭代处理的待处理字符串时,所述待处理字符串的原始正则表达式为所述最终正则表达式。
可以理解的是,待处理字符串包括初始时输入的原始字符串,或经迭代处理后设置为待处理的子串。原始字符串可以由用户从粘贴板粘贴过来,或者是从文件中读取的,又或者是从流式接口接收到的一串字符。初始时整个原始字符串都是待处理字符串,经迭代处理后,原始字符串中的一部分子串被设置为待处理字符串重新作为输入的待处理字符串;当待处理字符串为初始时输入的原始字符串时,对应其的原始正则表达式设为空,在迭代的处理中不断进行增加拼接操作。当待处理字符串为经过迭代处理的原始字符串时,对应其的原始正则表达式为所述最终正则表达式。
可以理解的是,在步骤S2中,待选择子串可以是用户通过鼠标点击并拖拽选取的子串,也可以是用户通过键盘控制光标移动形成的子串,获取并记录若干待选择子串在待处理字符串中的开始位置、结束位置、字符串长度、字符串内容。
可以理解的是,在步骤S3中,在待处理字符串中,将用户选择的第一个待选择子串作为选择子串,以选择子串为界,将待处理字符分为三部分子串,分别是选择子串之前的第一子串、选择子串和选择子串之后的第二子串。
可以理解的是,在步骤S4中,当用户完成子串选择后,提示用户进行选择子串的类型选择,对选择子串的类型进行选择的方法可以是点击选择类型按钮,也可以是下拉列表或者是勾选单选框。具体地,所述选择子串的类型包括期望获取子串及非期望获取子串,共两种类型。此时,对应的所述待拼接正则表达式生成策略也有两种。
示例性的,例如有如下两个字符串:
字符串1(告警发生):An alarm ID 6391level 5occurred at 17:44:3310-14-2021sent by XXXXXXXXXXXXXXX
字符串2(告警消除):An alarm ID 13630level 5cleared at 17:44:3310-14-2021sent by XXXXXXXXXXXXXXX
假设用户只期望匹配告警发生的字符串1,并且期望从中提取告警标识“6391”,不希望匹配告警消除的字符串2时,在现有的正则表达式中将会同时匹配两个字符串,无法实现只匹配字符串1不匹配字符串2的期望,而本发明实施例将“6391”设置为“期望获取串”、“occurred”设置为“非期望获取串”即通过引入非期望获取串能够解决该问题,减少误匹配的可能性。在本发明实施例增加了选择子串的类型选择,提高了匹配的准确率和减少性能消耗。现有的技术没有该项选择,灵活性有所不足,并且会造成误匹配和性能消耗过高。
可选地,当所述选择子串的类型为所述非期望获取子串时,所述待拼接正则表达式生成策略包括:
判断所述第一子串是否为空,若是,将所述选择子串作为待拼接正则表达式,否则,根据预设的第一规则生成待拼接正则表达式。
进一步地,所述根据预设的第一规则生成待拼接正则表达式,包括:
获取所述第一子串中的尾字符,将所述尾字符作为第一分隔符,计算所述第一分隔符在所述第一子串中出现的次数n;
将非所述第一分隔符的通配符与所述第一分隔符作为第三子串,获取限定n次的所述第三子串,以将限定n次的所述第三子串作为待拼接正则表达式。
示例性的,如当期望匹配“An alarm ID”、分隔符为空格“”时,使用限定3次的非空格通配符+空格的正则表达式来匹配,则待拼接正则表达式表示为“(?:[^]+){3}”。
可选地,当所述选择子串的类型为所述期望获取子串时,所述待拼接正则表达式生成策略包括:
获取所述第二子串的首字符,并将所述首字符作为第二分隔符;
判断所述选择子串中是否包含所述第二分隔符,若否,将非所述第二分隔符的通配符和第二分隔符依次进行拼接,得到第一拼接子串,以将所述第一拼接子串作为待拼接正则表达式,否则,根据预设的第二规则生成待拼接正则表达式。
可以理解的是,第二子串应该不为空,因为如果第二子串为空,正则表达式只能表示为“获取某个位置之后的所有字符(任意行数)”,一般上不会存在这种需求,通常第二子串至少包含一个换行符,则待拼接正则表达式表示为“获取某个位置之后同一行的所有字符”。
进一步地,所述根据预设的第二规则生成待拼接正则表达式,包括:
计算所述第二分隔符在所述选择子串中出现的次数i;
将非所述第二分隔符的通配符与所述第二分隔符作为第四子串,获取限定i次的所述第四子串,将限定i次的所述第四子串与所述第二分隔符依次进行拼接,得到第二拼接子串,以将所述第二拼接子串作为待拼接正则表达式。
如图2所示,在步骤S5中,在获取到的选择子串的类型为非期望获取子串之后,判断所述第一子串是否为空;
当判断到所述第一子串为空,最终正则表达式=原始正则表达式+选择子串;当判断到所述第一子串不为空时,最终正则表达式=原始正则表达式+限定n次的(非第一分隔符的通配符与第一分隔符);
在获取到的选择子串的类型为期望获取子串之后,判断选择子串中是否包含第二分隔符;
当判断到选择子串中包含所述第二分隔符时,最终正则表达式=原始正则表达式+非所述第二分隔符的通配符+第二分隔符;当判断到选择子串中不包含所述第二分隔符时,最终正则表达式=原始正则表达式+限定i次的(非所述第二分隔符的通配符与所述第二分隔符)+第二分隔符。
在本发明实施例中按分隔符次数表示的正则表达式,通用性更强。现有的技术主要依靠判定目标子串是否与预设字符串匹配,然后用预设字符串替换目标子串的方法生成正则表达式。本发明实施例的通用性更好,例如:某个序列号字符子串实际可能包含纯数字或纯字母或字母与数字的组合,但用户恰好某次使用了纯数字的样例,现有技术生成的正则表达式就会判定该子串必须是纯数字,这可能不符合用户的原意,本发明实施例可以避免该种情况,生成更通用的正则表达式。
可选地,在步骤S5将所述原始正则表达式和所述待拼接正则表达式依次进行拼接,得到所述待处理字符串的最终正则表达式之后,还包括:
判断所述第二子串是否还包含任一所述待选择子串,若是,将所述第二子串作为所述待处理字符串,以对所述第二子串进行下一次迭代处理,否则,输出所述最终正则表达式。
可以理解的是,所述将所述第二子串作为所述待处理字符串,以对所述第二子串进行下一次迭代处理,具体包括:将所述第二子串作为所述待处理字符串、将所述最终正则表达式作为所述待处理字符串的原始正则表达式,并将在所述第二子串中的其余所述待选择子串中的第一个待选择子串作为所述选择子串,以对所述第二子串进行下一次迭代处理,得到最终正则表达式。
参见图3,图3是本发明实施例提供的一种正则表达式生成装置10的结构框图,所述正则表达式生成装置10,包括:
待处理字符串获取模块11,用于获取待处理字符串,并获取所述待处理字符串的原始正则表达式;
待选择子串获取模块12,用于响应于用户的子串选择指令,获取所述待处理字符串的若干待选择子串;
待处理字符串分割模块13,用于将若干所述待选择子串中的第一个所述待选择子串作为选择子串,并以所述选择子串为界,对所述待处理字符串进行分割处理,获得在所述待处理字符串中的所述选择子串之前的第一子串、所述选择子串之后的第二子串,及所述选择子串;
待拼接正则表达式生成模块14,用于响应于用户的子串类型选择指令,获取所述选择子串的类型,并根据所述选择子串的类型,获取对应的待拼接正则表达式生成策略,以根据所述待拼接正则表达式生成策略得到待拼接正则表达式;其中,所述选择子串的类型包括:期望获取子串及非期望获取子串;
最终正则表达式获取模块15,用于将所述原始正则表达式和所述待拼接正则表达式依次进行拼接,得到所述待处理字符串的最终正则表达式。
优选地,当所述选择子串的类型为所述非期望获取子串时,所述待拼接正则表达式生成策略包括:
判断所述第一子串是否为空,若是,将所述选择子串作为待拼接正则表达式,否则,根据预设的第一规则生成待拼接正则表达式。
优选地,所述根据预设的第一规则生成待拼接正则表达式,包括:
获取所述第一子串中的尾字符,将所述尾字符作为第一分隔符,计算所述第一分隔符在所述第一子串中出现的次数n;
将非所述第一分隔符的通配符与所述第一分隔符作为第三子串,获取限定n次的所述第三子串,以将限定n次的所述第三子串作为待拼接正则表达式。
优选地,当所述选择子串的类型为所述期望获取子串时,所述待拼接正则表达式生成策略包括:
获取所述第二子串的首字符,并将所述首字符作为第二分隔符;
判断所述选择子串中是否包含所述第二分隔符,若否,将非所述第二分隔符的通配符和第二分隔符依次进行拼接,得到第一拼接子串,以将所述第一拼接子串作为待拼接正则表达式,否则,根据预设的第二规则生成待拼接正则表达式。
优选地,所述根据预设的第二规则生成待拼接正则表达式,包括:
计算所述第二分隔符在所述选择子串中出现的次数i;
将非所述第二分隔符的通配符与所述第二分隔符作为第四子串,获取限定i次的所述第四子串,将限定i次的所述第四子串与所述第二分隔符依次进行拼接,得到第二拼接子串,以将所述第二拼接子串作为待拼接正则表达式。
优选地,所述正则表达式生成装置,还包括:
判断模块,用于判断所述第二子串是否还包含任一所述待选择子串,若是,将所述第二子串作为所述待处理字符串,以对所述第二子串进行下一次迭代处理,否则,输出所述最终正则表达式。
优选地,所述获取待处理字符串,并获取所述待处理字符串的原始正则表达式,包括:
获取待处理字符串,并判断所述待处理字符串的类型;
当判断到所述待处理字符串为初始输入的待处理字符串时,所述待处理字符串的原始正则表达式为空;
当判断到所述待处理字符串为经过迭代处理的待处理字符串时,所述待处理字符串的原始正则表达式为所述最终正则表达式。
值得说明的是,本发明实施例所述的正则表达式生成装置10中各个模块的工作过程可参考上述实施例所述的正则表达式生成方法的工作过程,在此不再赘述。
为实现上述目的,本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序;其中,所述计算机程序在运行时控制所述计算机可读存储介质所在的设备执行上述任一实施例所述的正则表达式生成方法。
参见图4,图4是本发明实施例提供的一种终端设备20的结构框图,所述终端设备20包括:处理器21、存储器22以及存储在所述存储器22中并可在所述处理器21上运行的计算机程序。所述处理器21执行所述计算机程序时实现上述正则表达式生成方法实施例中的步骤。或者,所述处理器21执行所述计算机程序时实现上述各装置实施例中各模块/单元的功能。
示例性的,所述计算机程序可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器22中,并由所述处理器21执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在所述终端设备20中的执行过程。
所述终端设备20可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述终端设备20可包括,但不仅限于,处理器21、存储器22。本领域技术人员可以理解,所述示意图仅仅是终端设备20的示例,并不构成对终端设备20的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述终端设备20还可以包括输入输出设备、网络接入设备、总线等。
所称处理器21可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器21是所述终端设备20的控制中心,利用各种接口和线路连接整个终端设备20的各个部分。
所述存储器22可用于存储所述计算机程序和/或模块,所述处理器21通过运行或执行存储在所述存储器22内的计算机程序和/或模块,以及调用存储在存储器22内的数据,实现所述终端设备20的各种功能。所述存储器22可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器22可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
其中,所述终端设备20集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器21执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。
需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本发明提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本发明实施例所提供的正则表达式生成方法、装置、介质及设备,通过非期望获取串增加正则表达式的唯一性,输出符合用户需要的正则表达式,具有如下有益效果:
(1)提高了生成的正则表达式的匹配准确率,现有技术输出的整个正则表达式都是通配符,对结构相近的字符串可能造成误匹配。本发明输出的正则表达式中包含唯一的非期望获取子串,增加了正则表达式的唯一性,减少了误匹配的可能。
(2)减少了生成的正则表达式的匹配性能消耗。正则表达式进行匹配搜索时,需要对目标字符串进行多次遍历性的匹配计算,每次提取不同的开始位置和长度,现有技术输出的整个正则表达式都是通配符,遍历的性能消耗与目标字符串长度的几何级倍数相关,匹配的性能消耗相当大;本发明输出的正则表达式中包含有非期望获取子串,可以快速判定目标字符串是否包含该非期望获取子串,然后对非期望获取子串前后的字符串进行遍历,减少了遍历的次数和范围,从而减少匹配的性能消耗,并且非期望获取子串串越多,性能消耗就节约得越多。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。
Claims (6)
1.一种正则表达式生成方法,其特征在于,包括:
获取待处理字符串,并获取所述待处理字符串的原始正则表达式;
响应于用户的子串选择指令,获取所述待处理字符串的若干待选择子串;
将若干所述待选择子串中的第一个所述待选择子串作为选择子串,并以所述选择子串为界,对所述待处理字符串进行分割处理,获得在所述待处理字符串中的所述选择子串之前的第一子串、所述选择子串之后的第二子串,及所述选择子串;
响应于用户的子串类型选择指令,获取所述选择子串的类型,并根据所述选择子串的类型,获取对应的待拼接正则表达式生成策略,以根据所述待拼接正则表达式生成策略得到待拼接正则表达式;其中,所述选择子串的类型包括:期望获取子串及非期望获取子串;
将所述原始正则表达式和所述待拼接正则表达式依次进行拼接,得到所述待处理字符串的最终正则表达式;
其中,当所述选择子串的类型为所述非期望获取子串时,所述待拼接正则表达式生成策略包括:
判断所述第一子串是否为空,若是,将所述选择子串作为待拼接正则表达式,否则,根据预设的第一规则生成待拼接正则表达式;
当所述选择子串的类型为所述期望获取子串时,所述待拼接正则表达式生成策略包括:
获取所述第二子串的首字符,并将所述首字符作为第二分隔符;
判断所述选择子串中是否包含所述第二分隔符,若否,将非所述第二分隔符的通配符和第二分隔符依次进行拼接,得到第一拼接子串,以将所述第一拼接子串作为待拼接正则表达式,否则,根据预设的第二规则生成待拼接正则表达式;
所述根据预设的第一规则生成待拼接正则表达式,包括:
获取所述第一子串中的尾字符,将所述尾字符作为第一分隔符,计算所述第一分隔符在所述第一子串中出现的次数n;
将非所述第一分隔符的通配符与所述第一分隔符作为第三子串,获取限定n次的所述第三子串,以将限定n次的所述第三子串作为待拼接正则表达式;
所述根据预设的第二规则生成待拼接正则表达式,包括:
计算所述第二分隔符在所述选择子串中出现的次数i;
将非所述第二分隔符的通配符与所述第二分隔符作为第四子串,获取限定i次的所述第四子串,将限定i次的所述第四子串与所述第二分隔符依次进行拼接,得到第二拼接子串,以将所述第二拼接子串作为待拼接正则表达式。
2.如权利要求1所述的正则表达式生成方法,其特征在于,在将所述原始正则表达式和所述待拼接正则表达式依次进行拼接,得到所述待处理字符串的最终正则表达式之后,还包括:
判断所述第二子串是否还包含任一所述待选择子串,若是,将所述第二子串作为所述待处理字符串,以对所述第二子串进行下一次迭代处理,否则,输出所述最终正则表达式。
3.如权利要求1所述的正则表达式生成方法,其特征在于,所述获取待处理字符串,并获取所述待处理字符串的原始正则表达式,包括:
获取待处理字符串,并判断所述待处理字符串的类型;
当判断到所述待处理字符串为初始输入的待处理字符串时,所述待处理字符串的原始正则表达式为空;
当判断到所述待处理字符串为经过迭代处理的待处理字符串时,所述待处理字符串的原始正则表达式为所述最终正则表达式。
4.一种正则表达式生成装置,其特征在于,包括:
待处理字符串获取模块,用于获取待处理字符串,并获取所述待处理字符串的原始正则表达式;
待选择子串获取模块,用于响应于用户的子串选择指令,获取所述待处理字符串的若干待选择子串;
待处理字符串分割模块,用于将若干所述待选择子串中的第一个所述待选择子串作为选择子串,并以所述选择子串为界,对所述待处理字符串进行分割处理,获得在所述待处理字符串中的所述选择子串之前的第一子串、所述选择子串之后的第二子串,及所述选择子串;
待拼接正则表达式生成模块,用于响应于用户的子串类型选择指令,获取所述选择子串的类型,并根据所述选择子串的类型,获取对应的待拼接正则表达式生成策略,以根据所述待拼接正则表达式生成策略得到待拼接正则表达式;其中,所述选择子串的类型包括:期望获取子串及非期望获取子串;
最终正则表达式获取模块,用于将所述原始正则表达式和所述待拼接正则表达式依次进行拼接,得到所述待处理字符串的最终正则表达式;
其中,当所述选择子串的类型为所述非期望获取子串时,所述待拼接正则表达式生成策略包括:
判断所述第一子串是否为空,若是,将所述选择子串作为待拼接正则表达式,否则,根据预设的第一规则生成待拼接正则表达式;
当所述选择子串的类型为所述期望获取子串时,所述待拼接正则表达式生成策略包括:
获取所述第二子串的首字符,并将所述首字符作为第二分隔符;
判断所述选择子串中是否包含所述第二分隔符,若否,将非所述第二分隔符的通配符和第二分隔符依次进行拼接,得到第一拼接子串,以将所述第一拼接子串作为待拼接正则表达式,否则,根据预设的第二规则生成待拼接正则表达式;
所述根据预设的第一规则生成待拼接正则表达式,包括:
获取所述第一子串中的尾字符,将所述尾字符作为第一分隔符,计算所述第一分隔符在所述第一子串中出现的次数n;
将非所述第一分隔符的通配符与所述第一分隔符作为第三子串,获取限定n次的所述第三子串,以将限定n次的所述第三子串作为待拼接正则表达式;
所述根据预设的第二规则生成待拼接正则表达式,包括:
计算所述第二分隔符在所述选择子串中出现的次数i;
将非所述第二分隔符的通配符与所述第二分隔符作为第四子串,获取限定i次的所述第四子串,将限定i次的所述第四子串与所述第二分隔符依次进行拼接,得到第二拼接子串,以将所述第二拼接子串作为待拼接正则表达式。
5.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括存储的计算机程序;其中,所述计算机程序在运行时控制所述计算机可读存储介质所在的设备执行如权利要求1~3任一项所述的正则表达式生成方法。
6.一种终端设备,其特征在于,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器在执行所述计算机程序时实现如权利要求1~3任一项所述的正则表达式生成方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111484491.8A CN114385868B (zh) | 2021-12-07 | 2021-12-07 | 一种正则表达式生成方法、装置、介质及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111484491.8A CN114385868B (zh) | 2021-12-07 | 2021-12-07 | 一种正则表达式生成方法、装置、介质及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114385868A CN114385868A (zh) | 2022-04-22 |
CN114385868B true CN114385868B (zh) | 2022-09-30 |
Family
ID=81196232
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111484491.8A Active CN114385868B (zh) | 2021-12-07 | 2021-12-07 | 一种正则表达式生成方法、装置、介质及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114385868B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115269939B (zh) * | 2022-09-28 | 2023-02-17 | 哈尔滨工业大学(深圳)(哈尔滨工业大学深圳科技创新研究院) | 正则表达式生成方法、装置、智能终端及计算机存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6785677B1 (en) * | 2001-05-02 | 2004-08-31 | Unisys Corporation | Method for execution of query to search strings of characters that match pattern with a target string utilizing bit vector |
CN105868166B (zh) * | 2015-01-22 | 2020-01-17 | 阿里巴巴集团控股有限公司 | 一种正则表达式的生成方法及系统 |
CN111797594B (zh) * | 2020-06-29 | 2023-02-07 | 深圳壹账通智能科技有限公司 | 基于人工智能的字符串处理方法及相关设备 |
-
2021
- 2021-12-07 CN CN202111484491.8A patent/CN114385868B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN114385868A (zh) | 2022-04-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8356035B1 (en) | Association of terms with images using image similarity | |
CN113326420B (zh) | 问题检索方法、装置、电子设备和介质 | |
CN110347782A (zh) | 文章查重方法、装置和电子设备 | |
CN113408660B (zh) | 图书聚类方法、装置、设备和存储介质 | |
CN115795061B (zh) | 一种基于词向量和依存句法的知识图谱构建方法及系统 | |
CN114385868B (zh) | 一种正则表达式生成方法、装置、介质及设备 | |
EP3955256A1 (en) | Non-redundant gene clustering method and system, and electronic device | |
CN113590811A (zh) | 文本摘要生成方法、装置、电子设备及存储介质 | |
CN111401039A (zh) | 基于二元互信息的词语检索方法、装置、设备及存储介质 | |
CN105550217A (zh) | 场景音乐搜索方法及场景音乐搜索装置 | |
CN111522574A (zh) | 差分包生成方法及相关设备 | |
CN108399266B (zh) | 数据抽取方法、装置、电子设备及计算机可读存储介质 | |
CN109033082B (zh) | 语义模型的学习训练方法、装置及计算机可读存储介质 | |
CN105790967A (zh) | 一种网络日志处理方法和装置 | |
CN109451347A (zh) | 一种特效制作方法、装置、终端及计算机可读存储介质 | |
CN117763077A (zh) | 数据查询方法及装置 | |
CN114547476B (zh) | 一种基于二部图的社区搜索方法、装置以及处理设备 | |
JP7350364B2 (ja) | コンピュータ機器が実行するロングテールキーワードの識別方法、キーワード検索方法及びコンピュータ機器 | |
CN113792232B (zh) | 页面特征计算方法、装置、电子设备、介质及程序产品 | |
CN114490510A (zh) | 文本流归档方法、装置、计算机设备及存储介质 | |
CN113051504A (zh) | 文档预览方法、装置、设备、存储介质及程序产品 | |
CN112380445A (zh) | 数据查询方法、装置、设备和存储介质 | |
CN110955687B (zh) | 数据修改方法及装置 | |
CN114201601B (zh) | 舆情文本的摘要抽取方法、装置、设备及计算机存储介质 | |
CN114840754B (zh) | 搜索方法、装置、电子设备和可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |