IP Library Granted Patent US 11,580,166
Granted Patent B2
US 11,580,166 · App. 16/904,316 · Granted Feb 14, 2023

Regular expression generation using span highlighting alignment

Inventors: Michael Malak (Denver, CO); Luis E. Rivas (Denver, CO); Mark L. Kreider (Arvada, CO)
Assignee: Oracle International Corporation
G06F16/90344G06F16/242G06F16/951
View Patent ↗
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 11,580,166
App. No.
16/904,316
Granted
Feb 14, 2023
Kind
B2
Abstract

Techniques for generated regular expressions are disclosed. In some embodiments, a regular expression generator may receive input data comprising one or more character sequences. The regular expression generator may convert character sequences into a sets of regular expression codes and/or span data structures. The regular expression generator may identify a longest common subsequence shared by the sets of regular expression codes and/or spans, and may generate a regular expression based upon the longest common subsequence. Alignment of span data structures may be performed when generating the regular expression.

Claims (73)

1. A method of generating a regular expression comprising:

receiving, by a regular expression generator comprising one or more processors, a first input data that is divided into a first fragment of the first input data, a second fragment of the first input data and a third fragment of the first input data;

receiving, by the regular expression generator, a second input data that is divided into a first fragment of the second input data, a second fragment of the second input data, and a third fragment of the second input data;

receiving, by the regular expression generator, a first selection of the first fragment of the first input data;

in response to receiving the first selection of the first fragment of the first input data highlighting the first fragment of the first input data;

receiving, by the regular expression generator, a second selection of the first fragment of the second input data;

in response to receiving the second selection of the first fragment of the second input data highlighting the first fragment of the second input data;

aligning, by the regular expression generator, the first fragment of the first input data that is highlighted with the first fragment of the second input data that is highlighted; and

generating a first regular expression for data in the first fragment of the first input data that is highlighted and data in the first fragment of the second input data that is highlighted based on the alignment of the highlighted first fragment of the first input data with the highlighted first fragment of the second input data.

2. The method according to claim 1 , further comprising:

aligning, by the regular expression generator, the second fragment of the first input data and the second fragment of the second input data; and

aligning, by the regular expression generator, the third fragment of the first input data and the third fragment of the second input data.

3. The method according to claim 2 , further comprising:

generating, by the regular expression generator, a second regular expression for the second fragment of the first input data and the second fragment of the second input data that are aligned; and

generating, by the regular expression generator, a third regular expression for the third fragment of the first input data and the third fragment of the second input data that are aligned.

4. The method according to claim 3 , further comprising

determining, by the regular expression generator, a first span for the first regular expression;

determining, by the regular expression generator, a second span for the second regular expression;

determining, by the regular expression generator, a third span for the third regular expression; and

concatenating, by the regular expression generator, the first span, the second span and the third span.

5. The method according to claim 4 , further comprising:

executing, by the regular expression generator, a longest common subsequence algorithm on the concatenated first span, second span and third span; and

determining, by the regular expression generator, a longest common subsequence for the concatenated first span, second span and third span.

6. The method according to claim 5 , further comprising generating a fourth regular expression based on the determined longest common subsequence for the concatenated first span, second span and third span.

7. The method according to claim 4 , further comprising:

converting the first span comprising one or more numbers and one or more letters into an alphanumeric span; and

generating a mapping of indices that associates the alphanumeric span to indices of the one or more numbers and the one or more letters.

8. The method according to claim 1 , wherein the first fragment of the first input data is a highlighted fragment, wherein the second fragment of the first input data is data before the highlighted fragment, and wherein the third fragment of the first input data is data after the highlighted fragment.

9. The method according to claim 1 , wherein in response to the first regular expression comprising one or more symbols, associating each of the one or more symbols with a separate span.

10. A regular expression generator server computer comprising:

a processor;

a memory;

a computer readable medium coupled to the processor, the computer readable medium storing instructions executable by the processor for implementing a method comprising:

receiving, by a regular expression generator comprising one or more processors, a first input data that is divided into a first fragment of the first input data, a second fragment of the first input data and a third fragment of the first input data;

receiving, by the regular expression generator, a second input data that is divided into a first fragment of the second input data, a second fragment of the second input data, and a third fragment of the second input data;

receiving, by the regular expression generator, a first selection of the first fragment of the first input data;

in response to receiving the first selection of the first fragment of the first input data highlighting the first fragment of the first input data;

receiving, by the regular expression generator, a second selection of the first fragment of the second input data;

in response to receiving the second selection of the first fragment of the second input data highlighting the first fragment of the second input data;

aligning, by the regular expression generator, the first fragment of the first input data that is highlighted with the first fragment of the second input data that is highlighted; and

generating a first regular expression for data in the first fragment of the first input data that is highlighted and data in the first fragment of the second input data that is highlighted based on the alignment of the highlighted first fragment of the first input data with the highlighted first fragment of the second input data.

11. The server computer according to claim 10 , further comprising:

aligning, by the regular expression generator, the second fragment of the first input data and the second fragment of the second input data; and

aligning, by the regular expression generator, the third fragment of the first input data and the third fragment of the second input data.

12. The server computer according to claim 10 , further comprising:

generating, by the regular expression generator, a second regular expression for the second fragment of the first input data and the second fragment of the second input data that are aligned; and

generating, by the regular expression generator, a third regular expression for the third fragment of the first input data and the third fragment of the second input data that are aligned.

13. The server computer according to claim 12 , further comprising determining, by the regular expression generator, a first span for the first regular expression;

determining, by the regular expression generator, a second span for the second regular expression;

determining, by the regular expression generator, a third span for the third regular expression; and

concatenating, by the regular expression generator, the first span, the second span and the third span.

14. The server computer according to claim 13 , further comprising:

executing, by the regular expression generator, a longest common subsequence algorithm on the concatenated first span, second span and third span; and determining, by the regular expression generator, a longest common subsequence for the concatenated first span, second span and third span.

15. A non-transitory computer readable medium including instructions configured to cause one or more processors to perform operations comprising:

receiving, by a regular expression generator comprising one or more processors, a first input data that is divided into a first fragment of the first input data, a second fragment of the first input data and a third fragment of the first input data;

receiving, by the regular expression generator, a second input data that is divided into a first fragment of the second input data, a second fragment of the second input data, and a third fragment of the second input data;

receiving, by the regular expression generator, a first selection of the first fragment of the first input data;

in response to receiving the first selection of the first fragment of the first input data highlighting the first fragment of the first input data;

receiving, by the regular expression generator, a second selection of the first fragment of the second input data;

in response to receiving the second selection of the first fragment of the second input data highlighting the first fragment of the second input data;

aligning, by the regular expression generator, the first fragment of the first input data that is highlighted with the first fragment of the second input data that is highlighted; and

generating a first regular expression for data in the first fragment of the first input data that is highlighted and data in the first fragment of the second input data that is highlighted based on the alignment of the highlighted first fragment of the first input data with the highlighted first fragment of the second input data.

16. The computer readable medium according to claim 15 , further comprising:

aligning, by the regular expression generator, the second fragment of the first input data and the second fragment of the second input data; and

aligning, by the regular expression generator, the third fragment of the first input data and the third fragment of the second input data.

17. The computer readable medium according to claim 15 , further comprising:

generating, by the regular expression generator, a second regular expression for the second fragment of the first input data and the second fragment of the second input data that are aligned; and

generating, by the regular expression generator, a third regular expression for the third fragment of the first input data and the third fragment of the second input data that are aligned.

18. The computer readable medium according to claim 17 , further comprising

determining, by the regular expression generator, a first span for the first regular expression;

determining, by the regular expression generator, a second span for the second regular expression;

determining, by the regular expression generator, a third span for the third regular expression; and

concatenating, by the regular expression generator, the first span, the second span and the third span.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 17, 2020
From: MALAK, MICHAEL; RIVAS, LUIS E.; KREIDER, MARK L.
To: ORACLE INTERNATIONAL CORPORATION
Reel/Frame 052968/0132 →
Continuity (5)
Continuation In Part 16438330 · Jun 11, 2019
Provisional Application 62865797 · Jun 24, 2019
Provisional Application 62684498 · Jun 13, 2018
Provisional Application 62749001 · Oct 22, 2018
Related Publication 20200320142A1 · Oct 8, 2020
Cited By (2)
US 12,524,446 US 12,619,403