IP Library Patent Application 14274058
Patent Application
App. No. 14/274,058

Ordering a Set of Regular Expressions for Matching Against a String

Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US None
App. No.
14/274,058
Abstract

An information handling system matches regular expressions by placing the regular expressions into parent/child relationships. A first regular expression is set as a child of a second regular expression when information about matching the first regular expression against a first string is obtained by matching the second regular expression against the first string. The information handling system forms the regular expressions into a graph. The regular expressions are matched against a second string in an order based upon a structure of the graph. A third regular expression is matched against the second string before a fourth regular expression based upon a vertex representing the fourth regular expression being a child of a vertex representing the third regular expression.

Claims (42)

1 . A method comprising:

placing by an information handling system regular expressions into parent/child relationships wherein a first regular expression is set as a child of a second regular expression when information about matching the first regular expression against a first string is obtained by matching the second regular expression against the first string;

forming the regular expressions into a graph, the graph containing vertices representing the regular expressions and edges representing the parent/child relationships between the regular expressions; and

matching the regular expressions against a second string in an order based upon a structure of the graph, the order comprising matching a third regular expression against the second string before matching a fourth regular expression against the second string based upon a vertex representing the fourth regular expression being a child of a vertex representing the third regular expression.

2 . The method of claim 1 , wherein the first regular expression is set as the child of the second regular expression when a non-match between the second regular expression and the first string implies a non-match between the first regular expression and the first string.

3 . The method of claim 2 , wherein the first regular expression is set as the child of the second regular expression when:

the second regular expression is of the form .*<seq> . . . , where <seq> represents any sequence of characters of an alphabet and ‘ . . . ’ represents that the remainder of the expression may be of any form; and

the sequence <seq> is present in the first regular expression in one of the following ways:

<seq> is on a serial section of the first regular expression;

<seq> is on a cyclic, non-branched sequence of states of the first regular expression; or

<seq> is on all paths of a parallel divergence of the first regular expression.

4 . The method of claim 2 , wherein the first regular expression is set as the child of the second regular expression when:

the second regular expression is of the form ̂<seq1> . . . , where <seq1> represents any sequence of characters of an alphabet and ‘ . . . ’ represents that the remainder of the second regular expression may be of any form; and

the first regular expression is of the form ̂<seq2> . . . , where <seq2> represents any sequence of characters of an alphabet and ‘ . . . ’ represents that the remainder of the first regular expression may be of any form.

5 . The method of claim 1 , wherein the information includes a count of characters explicitly specified in the second regular expression that is matched by the first string.

6 . The method of claim 5 , further comprising annotating an edge of the edges between a second vertex representing the second regular expression and a first vertex representing the first regular expression with a required number of characters explicitly specified in the second regular expression that must be matched by the second string in order for the second string to be a possible match for the first regular expression.

7 . The method of claim 1 , further comprising annotating an edge of the edges between a second vertex representing the second regular expression and a first vertex representing the first regular expression with an indication of whether the parent/child relationship between the second regular expression and the first regular expression relationship is a transitive relationship.

8 . The method of claim 1 , further comprising matching a fifth regular expression against the second string before matching a sixth regular expression against the second string based upon the fifth regular expression having more children on the graph than the sixth regular expression.

9 . The method of claim 4 , further comprising matching the sixth regular expression against the second string before matching the second regular expression against the second string based upon the sixth regular expression being of the form ̂<seq1> . . . .

10 . The method of claim 1 , further comprising matching a fifth regular expression against the second string before matching a sixth regular expression against the second string based upon a match between the fifth regular expression and the second string implying a non-match between the second string and a child vertex of the fifth regular expression.

11 . The method of claim 1 , wherein the information handling system has a plurality of processors, the method further comprising:

creating a work queue for the regular expressions;

placing a subset of the regular expressions in the work queue when it is known that the subset needs to be processed;

ordering the subset of the regular expressions in the queue based upon the structure of the graph; and

selecting by one of the processors a regular expression of the subset of regular expressions from a front of the queue based upon the regular expression not having been marked as an invalid match or an exact match as a result of a previous matching operation.

12 . A method comprising:

placing by an information handling system regular expressions into parent/child relationships wherein a first regular expression is set as a child of a second regular expression when information about matching the first regular expression against a first string is obtained by matching the second regular expression against the first string;

forming the regular expressions into a graph, the graph containing vertices representing the regular expressions and edges representing the parent/child relationships between the regular expressions; and

annotating the edges of the graph, wherein an annotation of an edge between a parent vertex representing a parent regular expression and a child vertex representing a child regular expression indicates information about the parent/child relationship, the information comprising a required number of characters explicitly specified in the parent regular expression that must be matched by a second string in order for the second string to be a possible match for the child regular expression.

13 . The method of claim 12 , further comprising recompiling the graph based upon an addition or deletion of a vertex representing a third regular expression, wherein:

in the case of addition of the vertex, the only addition of edges to the graph in the recompiling is an addition of edges to the vertex; and

in the case of deletion of the vertex, the only deletion of edges to the graph in the recompiling is a deletion of edges to the vertex.

14 . The method of claim 12 , further comprising annotating the edge between the parent vertex and the child vertex with an indication of whether the parent/child relationship between the parent regular expression and the child regular expression relationship is a transitive relationship.

15 . The method of claim 12 , further comprising matching the regular expressions against a second string in an order based upon a structure of the graph, the order comprising matching a third regular expression against the second string before matching a fourth regular expression against the second string based upon a vertex representing the fourth regular expression being a child of a vertex representing the third regular expression.

16 . The method of claim 12 , wherein the first regular expression is set as the child of the second regular expression when a non-match between the second regular expression and the first string implies a non-match between the first regular expression and the first string.

17 . An information handling system comprising:

a relationship finder to place regular expressions into parent/child relationships wherein a first regular expression is set as a child of a second regular expression when information about matching the first regular expression against a first string is obtained by matching the second regular expression against the first string;

a grapher to form the regular expressions into a graph based upon the parent/child relationships, the graph containing vertices representing the regular expressions and edges representing relationships between the regular expressions; and

an annotator to annotate edges on the graph with information about the parent/child relationships, the annotations to include an annotation on an edge between a parent regular expression and a child regular expression to indicate a required number of characters explicitly specified in the parent regular expression that must be matched by a second string in order for the second string to be a possible match for the child regular expression.

18 . The information handling system of claim 17 , further comprising an executor to match the regular expressions against the second string in an order based upon a structure of the graph, the order comprising matching a third regular expression against the second string before matching a fourth regular expression against the second string based upon a vertex representing the fourth regular expression being a child of a vertex representing the third regular expression.

19 . The information handling system of claim 17 , wherein the relationship finder is to set the first regular expression as the child of the second regular expression when a non-match between the second regular expression and the first string implies a non-match between the first regular expression and the first string.

20 . The information handling system of claim 17 , wherein the annotator is to annotate the edges of the graph to indicate whether relationships represented by the edges are transitive relationships.

Assignments (17)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (045455/0001) Recorded May 20, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061753/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (040136/0001) Recorded Apr 26, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061324/0001 →
RELEASE OF SECURITY INTEREST Recorded Nov 3, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL, L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; WYSE TECHNOLOGY L.L.C.
Reel/Frame 058216/0001 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040134/0001 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 040136/0001 →
RELEASE OF REEL 033625 FRAME 0748 (NOTE) Recorded Sep 14, 2016
From: BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
To: DELL SOFTWARE INC.; DELL PRODUCTS L.P.; COMPELLENT TECHNOLOGIES, INC.; SECUREWORKS, INC.
Reel/Frame 040027/0050 →
RELEASE OF REEL 033625 FRAME 0688 (TL) Recorded Sep 14, 2016
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: DELL SOFTWARE INC.; DELL PRODUCTS L.P.; COMPELLENT TECHNOLOGIES, INC.; SECUREWORKS, INC.
Reel/Frame 040027/0757 →
RELEASE OF REEL 033625 FRAME 0711 (ABL) Recorded Sep 13, 2016
From: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
To: DELL SOFTWARE INC.; DELL PRODUCTS L.P.; COMPELLENT TECHNOLOGIES, INC.; SECUREWORKS, INC.
Reel/Frame 040016/0903 →
ENTITY CONVERSION WITH NAME CHANGE Recorded Dec 8, 2015
From: SECUREWORKS HOLDING CORPORATION
To: SECUREWORKS CORP.
Reel/Frame 037243/0736 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 5, 2015
From: DELL PRODUCTS L.P.
To: SECUREWORKS HOLDING CORPORATION
Reel/Frame 036262/0417 →
RELEASE OF SECURITY INTEREST Recorded Aug 5, 2015
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
To: SECUREWORKS HOLDING CORPORATION; SECUREWORKS, INC.
Reel/Frame 036262/0525 →
RELEASE OF SECURITY INTEREST Recorded Aug 5, 2015
From: BANK OF AMERICA, N.A.
To: SECUREWORKS HOLDING CORPORATION; SECUREWORKS, INC.
Reel/Frame 036262/0509 →
RELEASE OF SECURITY INTEREST Recorded Aug 5, 2015
From: BANK OF AMERICA, N.A.
To: SECUREWORKS HOLDING CORPORATION; SECUREWORKS, INC.
Reel/Frame 036262/0490 →
SUPPLEMENT TO PATENT SECURITY AGREEMENT (NOTES) Recorded Aug 27, 2014
From: COMPELLENT TECHNOLOGIES, INC.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; SECUREWORKS, INC.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 033625/0748 →
SUPPLEMENT TO PATENT SECURITY AGREEMENT (ABL) Recorded Aug 27, 2014
From: COMPELLENT TECHNOLOGIES, INC.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; SECUREWORKS, INC.
To: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 033625/0711 →
SUPPLEMENT TO PATENT SECURITY AGREEMENT (TERM LOAN) Recorded Aug 27, 2014
From: COMPELLENT TECHNOLOGIES, INC.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; SECUREWORKS, INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 033625/0688 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 19, 2014
From: MCLEAN, LEWIS I.
To: DELL PRODUCTS, LP
Reel/Frame 032923/0654 →