使用字符跳过的表达式识别

文档序号:817156 发布日期:2021-03-26 浏览:35次 >En<

阅读说明:本技术 使用字符跳过的表达式识别 (Expression recognition using character skipping ) 是由 任力伟 于 2018-12-28 设计创作,主要内容包括:可以获得多个搜索模式。多个搜索模式内的字符可以被包含在多个字母表内。可以限定包括多个搜索模式内的字符的池。可以设置针对要搜索的文本的指针。可以确定与指针相对应的文本的字符是否与池内的一个字符相匹配。基于与指针相对应的文本的字符与池内的一个字符相匹配,可以选择文本的第一部分以搜索多个搜索模式。基于与指针相对应的文本的字符与池内的任何字符都不匹配,可以在对多个搜索模式的搜索中跳过文本的第二部分。(Multiple search patterns may be obtained. Characters within the plurality of search patterns may be contained within a plurality of alphabets. A pool may be defined that includes characters within a plurality of search patterns. A pointer to the text to be searched may be set. It may be determined whether a character of the text corresponding to the pointer matches a character within the pool. Based on the character of the text corresponding to the pointer matching one of the characters in the pool, a first portion of the text may be selected to search a plurality of search modes. The second portion of text may be skipped in searching for the plurality of search modes based on a character of the text corresponding to the pointer not matching any character within the pool.)

使用字符跳过的表达式识别

相关申请的交叉引用

本申请要求2018年7月10日提交的名称为“Expression Recognition UsingCharacter Skipping(使用字符跳过的表达式识别)”的第16/031,437号美国非临时申请的优先权权益,所述美国非临时申请的内容通过引用以其全文并入本文。

技术领域

本公开总体上涉及在文本内查找搜索模式。

背景技术

样式搜索可以用在诸如数据安全系统等计算系统中。例如,文件可以包括诸如信用卡号或社会保险号等敏感数据,并且可能需要检测文件中敏感数据的存在,以便根据安全类别来对文件进行分类或者防止对文件进行未授权分发。敏感数据可以表现为文件内的多个样式,并且搜索所述文件内的多个样式可能需要重复搜索所述文件。例如,在文档中搜索多个表达式(例如,正则表达式)可能需要将文档的内容(例如,文本)分割成重叠的片段并且将每个表达式逐个地应用于每个片段。在文档中搜索N个不同的表达式可能需要对所述文档进行N次单独扫描。这种文件搜索可能占用大量处理资源(诸如处理时间和功率)。如果文档不包含所搜索表达式或仅包含所搜索表达式的几个实例,则可能在徒劳的搜索上花费大量处理资源。

发明内容

本公开的一个方面涉及一种用于查找搜索模式的方法。所述方法可以包括:获得多个搜索模式,其中,所述多个搜索模式内的字符被包含在多个字母表内;限定包括所述多个搜索模式内的所述字符的池;设置针对要搜索的文本的指针;确定与所述指针相对应的文本的字符是否与所述池内的一个字符相匹配;基于与所述指针相对应的文本的字符与所述池内的一个字符相匹配来选择所述文本的第一部分以搜索所述多个搜索模式;以及基于与所述指针相对应的文本的字符同池内的任何字符都不匹配而在对所述多个搜索模式的搜索中跳过所述文本的第二部分。

本公开的另一个方面涉及一种用于查找搜索模式的系统。所述系统可以包括一个或多个处理器以及存储有指令的存储器。所述指令在由所述一个或多个处理器执行时,可以使所述系统执行以下操作:获得多个搜索模式,其中,所述多个搜索模式内的字符被包含在多个字母表内;限定包括所述多个搜索模式内的所述字符的池;设置针对要搜索的文本的指针;确定与所述指针相对应的文本的字符是否与所述池内的一个字符相匹配;基于与所述指针相对应的文本的字符与所述池内的一个字符相匹配来选择所述文本的第一部分以搜索所述多个搜索模式;以及基于与所述指针相对应的文本的字符同池内的任何字符都不匹配而在对所述多个搜索模式的搜索中跳过所述文本的第二部分。

在一些实施例中,可以基于所述多个搜索模式的长度来确定最小长度参数和最大长度参数,并且可以基于所述最小长度参数来设置指针。

在一些实施例中,在对所述多个搜索模式的搜索中跳过所述文本的第二部分可以包括基于所述最小长度参数来使所述指针移位。

在一些实施例中,在所述文本的第一部分中搜索所述多个搜索模式可以包括在所述文本位于搜索窗口内的序列中搜索所述多个搜索模式,所述搜索窗口由起始位置和结束位置限定,其中,所述起始位置是基于所述指针和所述最小长度参数来确定的,并且所述结束位置是基于所述起始位置和所述最大长度参数来确定的。

在一些实施例中,所述搜索窗口的大小可以小于所述最大长度参数的两倍。

在一些实施例中,所述起始位置可以基于从所述指针移位小于所述最小长度参数来确定。

在一些实施例中,所述结束位置可以基于从所述起始位置移位小于所述最大长度参数的两倍来确定。

在一些实施例中,在所述文本的第一部分中搜索所述多个搜索模式之后,所述指针可以是基于所述起始位置、所述最小长度参数和所述最大长度参数来设置的。

在一些实施例中,在所述文本的第一部分中搜索所述多个搜索模式之后,所述指针可以是基于从所述起始位置移位小于所述最小长度参数与所述最大长度参数的组合来设置的。

在本公开的另一方面,一种用于查找搜索模式的系统可以包括一个或多个处理器以及存储有指令的存储器。所述指令在由所述一个或多个处理器执行时,可以使所述系统执行以下操作:获得多个搜索模式,其中,所述多个搜索模式内的字符被包含在多个字母表内;限定包括所述多个搜索模式内的所述字符的池;基于所述多个搜索模式的长度来确定最小长度参数和最大长度参数;基于所述最小长度参数来设置针对要搜索的文本的指针;确定与所述指针相对应的文本的字符是否与所述池内的一个字符相匹配;基于与所述指针相对应的文本的字符与所述池内的一个字符相匹配来选择所述文本的第一部分以搜索所述多个搜索模式,其中,在所述文本的第一部分中搜索所述多个搜索模式包括在所述文本位于搜索窗口内的序列中搜索所述多个搜索模式,所述搜索窗口由起始位置和结束位置限定,其中,所述起始位置是基于所述指针和所述最小长度参数来确定的,并且所述结束位置是基于所述起始位置和所述最大长度参数来确定的;以及基于与所述指针相对应的文本的字符同池内的任何字符都不匹配而在对所述多个搜索模式的搜索中跳过所述文本的第二部分,其中,在对所述多个搜索模式的搜索中跳过所述文本的第二部分包括基于所述最小长度参数来使所述指针移位。

在一些实施例中,所述搜索窗口的大小可以小于所述最大长度参数的两倍。所述起始位置可以是基于从所述指针向后移位小于所述最小长度参数来确定的。所述结束位置可以是基于从所述起始位置向前移位小于所述最大长度参数的两倍来确定的。在所述文本的第一部分中搜索所述多个搜索模式之后,所述指针可以是基于从所述起始位置移位小于所述最小长度参数与所述最大长度参数的组合来设置的。

在参考附图考虑以下描述和所附权利要求时,本文所公开的系统、方法和非暂态计算机可读介质的这些和其他特征、以及相关结构元件的操作方法和功能以及制造的部件与经济性的组合将变得更加显而易见,所有附图形成本说明书的一部分,在附图中,相似的附图标记表示各个附图中的相应部分。然而,要明确理解的是,附图仅出于说明和描述的目的,而不旨在作为对本发明的限制的限定。应当理解的是,前述概括描述和以下详细描述仅是示例性和解释性的,并且不限制所要求保护的本发明。

附图说明

通过参考附图可以更容易理解本发明的优选且非限制性实施例,在附图中:

图1图示了根据本公开的各种实施例的用于查找搜索模式的示例环境。

图2图示了根据本公开的各种实施例的示例字母表和示例字母表池。

图3图示了根据本公开的各种实施例的示例字母表长度。

图4图示了根据本公开的各种实施例的针对文本的示例搜索窗口。

图5图示了根据本公开的各种实施例的用于查找搜索模式的示例算法。

图6图示了根据本公开的各种实施例的示例方法的流程图。

图7图示了可以在其中实施本文描述的任何实施例的示例计算机系统的框图。

具体实施方式

现在将参考附图对本发明的具体、非限制性实施例进行描述。应当理解的是,本文公开的任何实施例的特定特征和方面可以与本文公开的任何其他实施例的特定特征和方面一起使用和/或组合。还应当理解的是,这些实施例是示例性的,并且仅仅对本发明范围内的少量实施例进行了说明。对本发明所涉及领域的技术人员而言显而易见的各种改变和修改被视为是处于如所附权利要求中进一步限定的本发明的精神、范围和意图内。

本文公开的方法改进了执行样式搜索的计算系统的功能。通过使用搜索模式内的字符池来跳过部分文本,可以仅搜索文本的潜在相关部分以获得搜索模式。可以通过跳过不可能出现搜索模式的那些文本部分来减少用于样式搜索的处理资源(诸如处理时间、存储器和功率)的消耗。本文公开的跳过文本部分可以使在文本内的样式搜索速度提高M倍,其中,M≥30*N并且N是搜索模式的数量。

图1图示了根据各种实施例的用于在文本内查找搜索模式的示例环境100。示例环境100可以包括计算系统102。计算系统102可以包括一个或多个处理器以及存储器(例如,永久性存储器、暂时性存储器)。(多个)处理器可以被配置为通过解释存储在存储器中的机器可读指令来执行各种操作。计算系统102可以包括其他计算资源和/或可以访问(例如,经由一个或多个连接/网络)其他计算资源。

计算系统102可以包括搜索模式部件112、池部件114、参数部件116、搜索部件118、和/或其他部件。虽然图1中将计算系统102示出为单个实体,但是这仅仅是为了便于参考,并不意味着限制。本文描述的计算系统102的一个或多个部件/功能可以在单个计算设备或多个计算设备中实施。在一些实施例中,本文描述的计算系统102的一个或多个部件或者一个或多个功能可以在一个或多个网络(例如,企业网络)、一个或多个端点、一个或多个服务器或者一个或多个云中实施。

搜索模式部件112可以被配置为获得多个搜索模式。搜索模式可以指在一个或多个文件内搜索的样式。搜索模式可以包括一个或多个字符序列。可以在一个或多个文件内搜索在搜索模式内的(多个)字符序列。例如,搜索模式可以包括字母序列、数字序列、其他符号序列、或者字母、数字、或其他符号的组合的序列。字符可以在一个搜索模式中出现单次或多次。可以在文档文本内搜索搜索模式内的字符。搜索模式可以由正则表达式来限定。

字符可以指具有一种或多种含义的符号,诸如形成单词的一部分、描绘字母、描绘数字、表达语法标点、表示数学概念、或表示其他信息的符号。字符可以选自字母、编号系统的数字、或特殊符号(例如,和符号“&”、百分比符号“%”、分配“@”)的集合。文件(例如,文档)文本可以由一个或多个字符形成。文件文本可以指文件的所写入信息、所打印信息、或所记录信息。文件的文本可以包括文件中包含的信息的视觉表示。

字符可以选自字母表。字母表可以指字符集或字符组。字母表可以包括多个字符(例如,字母、数字、语法标点、特殊符号、其他符号),这些字符可以用于限定信息。字母表可以包括单类型的字符(例如,一组字母、一组数字)。字母表可以包括多类型的字符(例如,一组字母和数字、一组语法标点和其他符号)。多个搜索模式内的字符可以被包含在多个字母表内。即,限定不同搜索模式的字符可以被包含在不同的字母表内。不同的字母表可以包括重叠的字符。例如,多个搜索模式可以包括第一搜索模式和第二搜索模式。第一搜索模式内的字符可以被包含在第一字母表内,而第二搜索模式内的字符可以被包含在第二字母表内。第一字母表和第二字母表的字符可以重叠,使得第一字母表中的至少一些字符被包含在第二字母表中。例如,第一搜索模式可以包括信用卡号,而第二搜索模式可以包括日期。信用卡号搜索模式字母表可以包括一个或多个数字(0、1、……、9)以及连接符号(-)。日期搜索模式字母表可以包括一个或多个数字(0、1、……、9)、连接符号(-)、以及斜杠符号(/)。信用卡号字母表与日期字母表的重叠字符可以包括数字(0、1、……、9)以及连接符号(-)。

在一些实施例中,搜索模式字母表可以包括搜索模式的所有潜在字符。例如,信用卡搜索模式字母表可以包括可用于构成信用卡的所有潜在字符:数字(0、1、……、9)以及连接符号(-)。在这种情况下,搜索模式可以用于查找可能表示信用卡号的文本部分,诸如通过查找具有十六个数位或者被连接符号分成多组四个数位的十六个数位的文本部分。在一些实施例中,搜索模式字母表可以仅包括特定搜索模式中实际包含的字符。例如,信用卡搜索模式字母表可以包括特定信用卡的特定字符。在这种情况下,搜索模式可以用于查找可以表示特定信用卡号的文本部分。例如,如果信用卡搜索模式是“1111-2222-3333-4444”,则搜索模式字母表可以包括该搜索模式中的五个字符(1,2,3,4,-)。其他类型的搜索模式和字母表也被考虑到了。

获得搜索模式可以包括以下操作中的一个或多个:访问、获取、分析、确定、检查、识别、加载、定位、打开、接收、取得、审阅、存储或以其他方式获得搜索模式。搜索模式部件112可以从一个或多个位置获得搜索模式。例如,搜索模式部件112可以从诸如计算系统102的电子存储装置、可经由网络访问的设备的电子存储装置、另一计算设备/系统(例如,台式机、膝上型计算机、智能电话、平板计算机、移动设备)等存储位置或其他位置获得搜索模式。

在一些实施例中,搜索模式部件112可以基于搜索模式选择、搜索模式检测、搜索模式上传、或与搜索模式相关的其他动作来获得搜索模式。例如,搜索模式部件112可以基于用户选择搜索模式(例如,用户经由键盘输入搜索模式或者在可能的搜索模式之中选择搜索模式)来获得搜索模式。搜索模式部件112可以基于用于搜索的计算系统选择搜索模式来获得搜索模式。搜索模式部件112可以基于计算系统检测搜索模式来获得搜索模式。搜索模式部件112可以基于搜索模式或文本被上传到计算系统来获得搜索模式。与搜索模式相关的其他动作可以促进搜索模式部件112获得搜索模式。

池部件114可以被配置为限定包括多个搜索模式内的字符的池。池可以指多个搜索模式内的字符的集合。池可以基于多个搜索模式的字母表来限定。池可以被限定为包括多个搜索模式的字符。例如,参考信用卡号搜索模式和日期搜索模式的示例,池部件114可以限定包括信用卡号搜索模式和日期搜索模式内的字符的池。池可以提供多个搜索模式的多个字母表的组合。

针对单个搜索模式扫描文件(例如,文本文档)可能是计算成本较高的,更不用说针对多个搜索模式。将多个搜索模式内的字符组成单个池可以使计算系统102能够更高效地在文件中搜索多个搜索模式。例如,在(多个)文件中单独地搜索信用卡号、日期、社会保险号、和其他信息可能是费时且耗费资源的。可以组合信用卡号、日期、社会保险号和其他信息的字母表,以在(多个)文件中一次搜索信用卡号、日期、社会保险号和其他信息的潜在出现。由于多个字母表内的重叠字符,多个搜索模式内的字符的池可以包括相对较小的字符集。

参数部件116可以被配置为确定用于搜索搜索模式的一个或多个参数。例如,参数部件116可以确定一个或多个参数用于确定针对要搜索的文本的指针。针对文本的指针可以指这样的对象:其值指所述文本的特定部分。指针可以引用要搜索的文本内的位置。例如,指针可以引用要搜索的文档文本内的特定字符位置。参数部件116可以确定一个或多个参数用于确定要用于搜索搜索模式的搜索窗口(例如,搜索窗口的起始位置、搜索窗口的结束位置、搜索窗口的大小)。搜索窗口可以指限定要搜索的文本的字符段或序列的边界。例如,文本可以包括一千个字符,并且搜索窗口可以限定将搜索文本的哪个部分(例如,哪个字符子组)以查找(多个)搜索模式的(多次)出现。对其他参数的确定也被考虑到了。

在一些实施例中,参数部件116可以确定最小长度参数和最大长度参数。可以基于多个搜索模式的长度来确定最小长度参数和最大长度参数。最小长度参数可以被确定为多个搜索模式的最短长度或最短潜在长度。最大长度参数可以被确定为多个搜索模式的最长长度或最长潜在长度。例如,多个搜索模式可以包括三个搜索模式:社会保险号搜索模式、信用卡号搜索模式、日期搜索模式。社会保险号搜索模式可以具有九个字符(九个数字)的最小长度和十一个字符(九个数字和两个连接号)的最大长度。信用卡号搜索模式可以具有十五个字符(十五个数字)的最小长度和十九个字符(十六个数字和三个连接号)的最大长度。日期搜索模式可以具有六个字符(六个数字)的最小长度和十个字符(八个数字和两个连接号、八个数字和两个斜杠符号)的最大长度。社会保险号搜索模式、信用卡号搜索模式、日期搜索模式的最小长度参数可以是六(表示日期的六个数字)。社会保险号搜索模式、信用卡号搜索模式、日期搜索模式的最大长度参数可以是十九(表示信用卡号的十六个数字和三个连接号)。最小长度参数和最大长度参数的其他值也被考虑到了。

搜索部件118可以被配置为设置针对要搜索的文本的指针。所述指针可以引用要搜索的文本内的位置,诸如要搜索的文档文本内的特定字符位置。指针的值可以由搜索部件118基于搜索的阶段来改变。在搜索开始时,指针可以基于最小长度参数来设置。可以在搜索开始时设置指针以引用与最小长度参数的值相对应的字符位置。例如,参考这三个搜索模式的示例,搜索部件118可以将指针设置成值为六。

搜索部件118可以被配置为确定与指针相对应的文本的字符是否同池内的一个字符相匹配。即,搜索部件118可以确定与指针相对应的文本的字符是否被包含在池内。例如,参考这三个搜索模式的示例,搜索部件118可以确定文本的第六个字符是否与这三个搜索模式内的字符的池(例如,0至9、-、/)内的某一个字符相匹配。

基于与指针相对应的文本的字符同池内的任何字符都不匹配,搜索部件118可以在对多个搜索模式的搜索中跳过文本的一部分。在一些实施例中,在对多个搜索模式的搜索中跳过文本的一部分可以包括基于最小长度参数来使指针移位。例如,参考这三个搜索模式的示例,搜索部件118可以将指针移位值六。可以重复确定与指针相对应的文本的字符是否被包含在池内、以及基于与指针相对应的文本同池内的任何字符都不匹配而跳过文本的一部分的过程,直到确定与指针相对应的文本的字符被包含在池内。

这样跳过文本部分可以允许搜索部件118扫描文本的潜在相关部分。当与指针相对应的文本的字符被确定为不被包含在池内时,可以从所述扫描中跳过一定量的文本前面部分,因为所述前面部分不相关。即,基于与指针相对应的文本的字符被确定为不被包含在池内,搜索部件118可以确定文本的哪些部分不能包含一个或多个搜索模式的出现,并且在对多个搜索模式的搜索中忽略那些部分。这样跳过文本部分可以使文本扫描速度提高M倍,其中M≥30*N并且N是搜索模式的数量。例如,参考这三个搜索模式的示例,这样跳过文本部分可以使文本内的对多个搜索模式的扫描加速90倍。

基于与指针相对应的文本的字符同池内的某一字符相匹配,搜索部件118可以选择文本的一部分以搜索多个搜索模式。当与指针相对应的文本的字符被确定为被包含在池内时,所述扫描中可以包括一定量的文本前面部分和后面部分,因为前面部分和后面部分潜在地相关(潜在地包括(多个)搜索模式的(多次)出现)。这样选择用于扫描的文本部分可以基于确定与指针相对应的文本的字符同池内的字符相匹配来提供自适应文本扫描。

被选择用于搜索多个搜索模式的文本部分可以由搜索窗口来限定。搜索窗口可以限定将搜索文本内的哪个字符子组以查找多个搜索模式。例如,在文本的一部分中搜索多个搜索模式可以包括在文本位于搜索窗口内的序列中搜索该多个搜索模式。搜索窗口的起始位置可以限定在搜索中要包括的文本的第一字符位置。起始位置(ws)可以基于指针(ptr)和最小长度参数(m)来确定。在一些实施例中,起始位置(ws)可以基于从指针(ptr)向后移位小于最小长度参数(m)来确定。例如,起始位置(ws)可以确定为:ws=ptr-m+1。搜索窗口的结束位置可以限定在搜索中要包括的文本的最后一个字符位置。结束位置(wt)可以基于起始位置(ws)和最大长度参数(M)来确定。在一些实施例中,搜索窗口的大小(在ws与wt之间)可以小于最大长度参数的两倍(即,2M-1)。在一些实施例中,结束位置(wt)可以基于从起始位置(ws)向前移位小于最大长度参数的两倍(2M)来确定。例如,结束位置(wt)可以确定为:wt=min(ws+2M-2,L),其中,L是正在搜索的文本的长度。即,搜索窗口的结束位置可以由文本的长度来界定。起始位置和结束位置的其他确定、以及搜索窗口的其他大小也被考虑了。

搜索部件118(或另一个部件)可以在搜索窗口内在文本的一部分内搜索字符,以查看是否有多个搜索模式内的各搜索模式的任何出现。例如,搜索部件118可以将各个正则表达式应用于搜索窗口内的文本,以检测各个搜索模式的任何出现。

搜索部件118可以在文本的一部分中搜索多个搜索模式之后改变指针的值。在一些实施例中,指针(ptr)可以基于起始位置(ws)、最小长度参数(m)、和最大长度参数(M)来设置。在一些实施例中,指针(ptr)可以基于从起始位置(ws)移位小于最小长度参数和最大长度参数的组合(m+M)来设置。例如,指针(ptr)可以被设置为:ptr=ws+M+m-1。

在一些实施例中,如果在搜索窗口内找到文本的一部分内的一个或多个搜索模式,则可以基于从结束位置(wt)移位小于最大长度参数(M)来设置新搜索窗口的新起始位置(new_ws)。例如,新搜索窗口的新起始位置(new_ws)可以被设置为:new_ws=wt-(M-2)。新搜索窗口内的文本部分可以与先前的搜索窗口内的文本部分重叠。在新搜索窗口内在文本的一部分中搜索多个搜索模式可能导致检测到一个或多个之前检测到的搜索模式的出现。即,新搜索窗口与先前的搜索窗口之间的重叠可能导致在文本内找到一次或多次相同的搜索模式出现。可以从搜索结果中移除文本内的这种冗余的搜索模式匹配。

图2图示了根据本公开的各种实施例的示例字母表和示例字母表池。示例字母表可以包括社会保险号搜索模式字母表、信用卡号搜索模式字母表、以及日期搜索模式字母表。社会保险号搜索模式字母表可以包括十一个字符(0、1、……、9、-)。信用卡号搜索模式字母表可以包括十一个字符(0、1、……、9、-)。日期搜索模式字母表可以包括十二个字符(0、1、……、9、-、/)。这三个搜索模式的字母表可以包括十一个重叠字符(0、1、……、9、-)。池可以被限定为包括搜索模式内的字符。池可以被限定为各个字母表的并集。池可以包括十二个字符(0、1、……、9、-、/)。由于多个字母表内的重叠字符,搜索模式内的字符的池可以包括相对较小的字符集。这样可以有助于更高效地扫描文本以查找搜索模式的出现。并非逐个地搜索社会保险号搜索模式、信用卡号搜索模式和日期搜索模式,而是可以搜索池内的字符以确定文本的哪些部分可能是潜在相关的(潜在地包括(多个)搜索模式的(多次)出现)。

图3图示了根据本公开的各种实施例的示例字母表长度。字母表可以包括社会保险号搜索模式字母表、信用卡号搜索模式字母表、以及日期搜索模式字母表。社会保险号搜索模式可以具有九个字符(九个数字)的最小长度和十一个字符(九个数字和两个连接号)的最大长度。即:minLength(Social Security Number)=9,以及maxLength(SocialSecurity Number)=11。信用卡号搜索模式可以具有十五个字符(十五个数字)的最小长度和十九个字符(十六个数字和三个连接号)的最大长度。即:minLength(Credit CardNumber)=16,以及maxLength(Credit Card Number)=19。日期搜索模式可以具有六个字符(六个数字)的最小长度和十个字符(八个数字和两个连接号、八个数字和两个斜杠符号)的最大长度。即:minLength(Date)=6,以及maxLength(Date)=10。

最小长度参数可以被确定为不同搜索模式的最短长度或最短潜在长度。社会保险号搜索模式、信用卡号搜索模式、日期搜索模式的最小长度参数可以是六(表示日期的六个数字)。即:m=6。

最大长度参数可以被确定为不同搜索模式的最长长度或最长潜在长度。社会保险号搜索模式、信用卡号搜索模式、日期搜索模式的最大长度参数可以是十九(表示信用卡号的十六个数字和三个连接号)。即:M=19。最小长度参数和最大长度参数的其他值也被考虑了。

图4图示了根据本公开的各种实施例的针对文本400的示例搜索窗口422、424。文本400可以是要在其内搜索多个搜索模式的文本。例如,可以搜索文本400以查找社会保险号搜索模式、信用卡号搜索模式、以及日期搜索模式。文本400可以包括六十个字符(例如,字母、数字、符号)。即,文本400可以具有为六十的长度(L)。文本400可以包括日期432和社会保险号434。日期432可以由文本400的第十至第十九个字符形成。社会保险号434可以由文本400的第三十六至第四十四个字符形成。

基于多个搜索模式的长度,可以确定最小长度参数(m)和最大长度参数(M)。例如,最小长度参数(m)可以被确定为六,并且最大长度参数(M)可以被确定为十九。

基于最小长度参数(m),可以将针对文本400的指针(ptr)初始地设置成值为六。可以将与指针相对应的文本400的字符402(第六个字符)同包括多个搜索模式内的字符的池进行比较。基于字符402与池内的任何字符都不匹配,可以从搜索中跳过文本400的第一至第六个字符。

然后可以将指针(ptr)移位为六的最小长度参数(m),以指向文本的字符404。可以将文本400的字符404与池进行比较。基于字符404(例如,“/”)与池内的字符相匹配,可以确定搜索窗口A 422。搜索窗口A 422可以具有为七的起始位置(ws)和为四十三的结束位置(wt)。可以搜索文本400的第七至第四十三个字符以查找多个搜索模式。可以找到文本400内的日期432。

然后可以将指针(ptr)移位搜索窗口A 422的起始位置(ws)、最大长度参数(M)与最小长度参数(m)的组合减一。即:ptr=ws+M+m-1。指针(ptr)可以指向文本的字符406。

基于字符402与池内的字符相匹配,可以确定搜索窗口B 424。搜索窗口B 424可以具有为二十六的起始位置(ws)和为六十的结束位置(wt)。搜索窗口B 424可以与搜索窗口A422重叠。搜索窗口422、424之间的重叠可以是十八个字符,其比为十九的最大长度参数(M)小一。可以搜索文本400的第二十六至第六十个字符以查找多个搜索模式。可以找到文本400内的社会保险号434。

然后指针(ptr)可以被移位以指向字符408。基于字符408与池内的任何字符都不匹配,指针(ptr)可以被移位以指向字符410。基于字符410与池内的任何字符都不匹配,指针(ptr)可以被移位六而到达超过文本400的长度(L)的位置。基于指针(ptr)的值大于文本400的长度(L),可以结束对文本400的搜索。

图5图示了根据本公开的各种实施例的用于查找搜索模式的示例算法500。算法500的输入可以包括:要搜索的文本(T)、T的长度(L)、以及包括要在T内搜索的k个搜索模式的一组搜索模式(P1、P2、……、Pk)。在步骤1处,可以针对所匹配的搜索结果初始化数据结构DT。在步骤2处,池(Pool)可以被限定为各个搜索模式的字母表的并集。在步骤3处,可以基于各个搜索模式的实际长度或潜在长度来确定最小长度参数(m)和最大长度参数(M)。最小长度参数(m)可以被确定为搜索模式的最短长度或最短潜在长度。最大长度参数(M)可以被确定为搜索模式的最长长度或最长潜在长度。在步骤4处,指针(ptr)可以被设置为最小长度参数(m)的值。在步骤5处,如果指针(ptr)大于T的长度(L),则算法400可以结束。在步骤6处,如果文本的字符(T[ptr])未包含在池内,则指针(ptr)可以移位最小长度参数(m)的值并且算法500可以进行至步骤5。在步骤7处,如果文本的字符(T[ptr])包含在池内,则可以设置搜索窗口。搜索窗口可以由起始位置(ws=ptr-m+1)和结束位置(wt=min(ws+2M-2,L))来限定。在步骤8处,可以将所有搜索模式(P1、P2、……、Pk)都应用于搜索窗口,以确定搜索窗口内的文本是否包括搜索模式的一次或多次出现。在步骤9处,如果一个或多个搜索模式与搜索窗口内的文本的(多个)部分相匹配,则可以将(多个)匹配结果添加到数据结构(DT)中。在步骤10处,可以基于起始位置(ws)、最大长度参数(M)和最小长度参数(m)来设置指针(ptr)(ptr=ws+M+m-1),并且算法500可以进行至步骤5。在算法500结束时,可以输出包含文本内匹配的搜索模式的数据结构(DT)。

图6图示了根据本公开的各种实施例的示例方法600的流程图。方法600可以在各种环境中实施,所述环境包括例如图1的环境100。下文呈现的方法600的操作旨在是说明性的。取决于实施方式,方法600可以包括以各种顺序或并行地执行的附加的、更少的、或替代性的步骤。方法600可以在包括一个或多个处理器的各种计算系统或设备中实施。

参照方法600,在框610处,可以获得多个搜索模式。在框620处,池可以被限定为包括多个搜索模式内的字符。在框630处,可以设置针对要搜索的文本的指针。在框640处,可以确定与指针相对应的文本的字符是否同池内的一个字符相匹配。在框650处,基于与指针相对应的文本的字符同池内的一个字符相匹配,可以选择文本的第一部分以搜索多个搜索模式。在框660处,基于与指针相对应的文本的字符同池内的任何字符都不匹配,可以在对多个搜索模式的搜索中跳过文本的第二部分。第一部分可以与第二部分不同。

图7是图示了可以在其上实施本文描述的任何实施例的计算机系统700的框图。计算机系统700包括总线702或用于传送信息的其他通信机制、与总线702耦接以处理信息的一个或多个硬件处理器704。例如,(多个)硬件处理器704可以是一个或多个通用微处理器。

计算机系统700还包括耦接到总线702以用于存储要由(多个)处理器704执行的信息和指令的主存储器706,诸如随机存取存储器(RAM)、高速缓存和/或其他动态存储设备。主存储器706还可以用于存储在执行要由(多个)处理器704执行的指令期间的临时变量或其他中间信息。这些指令当存储在(多个)处理器704可访问的存储介质中时,使计算机系统700成为被自定义为执行指令中指定的操作的专用机器。主存储器706可以包括非易失性介质和/或易失性介质。例如,非易失性介质可以包括光盘或磁盘。易失性介质可以包括动态存储器。介质的常见形式可以例如包括软盘、软磁盘、硬盘、固态驱动器、磁带或者任何其他磁性数据存储介质、CD-ROM、任何其他光学数据存储介质、具有孔图案的任何物理介质、RAM、DRAM、PROM和EPROM、闪速存储器EPROM、NVRAM、任何其他存储器芯片或者盒、以及所述介质的联网版本。

计算机系统700可以使用自定义的硬接线逻辑、一个或多个ASIC或FPGA、固件和/或程序逻辑来实施本文描述的技术,所述自定义硬接线逻辑、一个或多个ASIC或FPGA、固件和/或程序逻辑与计算机系统相结合使计算机系统700成为专用机器或者将其编程为专用机器。根据一个实施例,响应于(多个)处理器704执行包含在主存储器706中的一个或多个指令的一个或多个序列,计算机系统700执行本文中的技术。这样的指令可以从诸如存储设备708等另一存储介质读到主存储器706中。执行包含在主存储器706中的这些指令序列使得(多个)处理器704执行本文所描述的过程步骤。例如,图6所示且结合此附图描述的过程/方法可以由存储在主存储器706中的计算机程序指令来实施。当这些指令由(多个)处理器704执行时,它们可以执行图6所示且如上文所描述的步骤。在替代性实施例中,可以使用硬接线电路代替软件指令或与软件指令组合。

计算机系统700还包括耦接到总线702的通信接口710。通信接口710提供耦接到一个或多个网络链路的双向数据通信,所述一个或多个网络链路连接到一个或多个网络。作为另一示例,通信接口710可以是用于提供与兼容LAN(或用于与WAN进行通信的WAN部件)的数据通信连接的局域网(LAN)卡。还可以实施无线链路。

可以将某些操作的执行分配到多个处理器之中,使其不是仅驻留在单个机器内,而是跨多个机器部署。在一些示例实施例中,处理器或处理器实施的引擎可以位于单个地理位置(例如,在家庭环境、办公室环境、或服务器群内)。在其他示例实施例中,处理器或处理器实施的引擎可以跨多个地理位置分布。

本文将某些实施例描述为包括逻辑或多个部件。部件可以构成软件部件(例如,在机器可读介质上具体化的代码)或硬件部件(例如,能够执行可以以特定物理方式配置或布置的某些操作的有形单元)。

虽然本文描述了所公开原理的示例和特征,但是在不脱离所公开实施例的精神和范围的情况下,修改、适配和其他实施方式是可能的。而且,词语“包括(comprising)”、“具有(having)”、“包含(containing)”和“包括(including)”以及其他类似形式在意义上是等同的并且是开放式的,其中在这些词中的任何一个之后的一个或多个项并不意味着是这一个或多个项的详尽列表,或不限于所列出的一个或多个项。还必须注意,除非上下文明确地另有说明,否则如在此和所附权利要求中所使用的单数形式“一个(a)”、“一种(an)”以及“所述(the)”包括复数个指代物。

以足以使得本领域技术人员能够实践所公开的教导的细节描述了本文所示的实施例。可以使用并从本文所示的实施例得到其他实施例,从而使得可以在不脱离本公开的范围的情况下做出结构和逻辑的替换和改变。因此,具体实施方式不应被视为具有限制意义,并且各种实施例的范围仅由所附权利要求以及这些权利要求被授权的等同物的全部范围来限定。

19页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:利用定量成像的方法和系统

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!