Skip to content

Commit ae6e641

Browse files
authored
Improve regex readability (#197)
* #196 Improve regex readability.
1 parent a862ad9 commit ae6e641

File tree

6 files changed

+86
-86
lines changed

6 files changed

+86
-86
lines changed

phileas-core/src/main/java/ai/philterd/phileas/services/filters/regex/DateFilter.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -101,9 +101,9 @@ private List<FilterPattern> buildFilterPatterns() {
101101

102102
// These spans do NOT have replaceable delimiters.
103103
// These dates with the month names are pretty specific so they always pass validation as valid dates.
104-
filterPatterns.add(new FilterPattern.FilterPatternBuilder(Pattern.compile("(?i)(\\b\\d{1,2}\\D{0,3})?\\b(?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|Jun(?:e)?|Jul(?:y)?|Aug(?:ust)?|Sep(?:tember)?|Oct(?:ober)?|(Nov|Dec)(?:ember)?) [0-9]{0,1}, [0-9]{4}\\b"), 0.75).withFormat("MMMM dd, yyyy").withAlwaysValid(true).build());
105-
filterPatterns.add(new FilterPattern.FilterPatternBuilder(Pattern.compile("(?i)(\\b\\d{1,2}\\D{0,3})?\\b(?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|Jun(?:e)?|Jul(?:y)?|Aug(?:ust)?|Sep(?:tember)?|Oct(?:ober)?|(Nov|Dec)(?:ember)?) [0-9]{2}\\b"), 0.75).withFormat("MMMM yy").withAlwaysValid(true).build());
106-
filterPatterns.add(new FilterPattern.FilterPatternBuilder(Pattern.compile("(?i)(\\b\\d{1,2}\\D{0,3})?\\b(?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|Jun(?:e)?|Jul(?:y)?|Aug(?:ust)?|Sep(?:tember)?|Oct(?:ober)?|(Nov|Dec)(?:ember)?) [0-9]{4}\\b"), 0.75).withFormat("MMMM yyyy").withAlwaysValid(true).build());
104+
filterPatterns.add(new FilterPattern.FilterPatternBuilder(Pattern.compile("(?i)(\\b\\d{1,2}\\D{0,3})?\\b(?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|Jun(?:e)?|Jul(?:y)?|Aug(?:ust)?|Sep(?:tember)?|Oct(?:ober)?|(Nov|Dec)(?:ember)?) [\\d]{0,1}, [\\d]{4}\\b"), 0.75).withFormat("MMMM dd, yyyy").withAlwaysValid(true).build());
105+
filterPatterns.add(new FilterPattern.FilterPatternBuilder(Pattern.compile("(?i)(\\b\\d{1,2}\\D{0,3})?\\b(?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|Jun(?:e)?|Jul(?:y)?|Aug(?:ust)?|Sep(?:tember)?|Oct(?:ober)?|(Nov|Dec)(?:ember)?) [\\d]{2}\\b"), 0.75).withFormat("MMMM yy").withAlwaysValid(true).build());
106+
filterPatterns.add(new FilterPattern.FilterPatternBuilder(Pattern.compile("(?i)(\\b\\d{1,2}\\D{0,3})?\\b(?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|Jun(?:e)?|Jul(?:y)?|Aug(?:ust)?|Sep(?:tember)?|Oct(?:ober)?|(Nov|Dec)(?:ember)?) [\\d]{4}\\b"), 0.75).withFormat("MMMM yyyy").withAlwaysValid(true).build());
107107

108108
// The spans below DO have replaceable delimiters.
109109

phileas-core/src/main/java/ai/philterd/phileas/services/filters/regex/DriversLicenseFilter.java

Lines changed: 51 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -34,57 +34,57 @@ public DriversLicenseFilter(FilterConfiguration filterConfiguration) {
3434
// https://ntsi.com/drivers-license-format/
3535
// https://www.mvrdecoder.com/content/drvlicformats.aspx
3636

37-
driversLicensePatterns.put("ALABAMA", Pattern.compile("\\b[0-9]{8}\\b")); // https://www.mvtrip.alabama.gov/News/ViewArticle/444
38-
driversLicensePatterns.put("ALASKA", Pattern.compile("\\b[0-9]{7}\\b"));
39-
driversLicensePatterns.put("ARIZONA", Pattern.compile("\\b([A-Z][0-9]{8})|([0-9]{9})\\b"));
40-
driversLicensePatterns.put("ARKANSAS", Pattern.compile("\\b[9][0-9]{7}\\b"));
41-
driversLicensePatterns.put("CALIFORNIA", Pattern.compile("\\b[A-Z][0-9]{7}\\b"));
42-
driversLicensePatterns.put("COLORADO", Pattern.compile("\\b[0-9]{2}-[0-9]{3}[0-9]{4}\\b"));
43-
driversLicensePatterns.put("CONNECTICUT", Pattern.compile("\\b[0-9]{9}\\b"));
44-
driversLicensePatterns.put("DELAWARE", Pattern.compile("\\b[0-9]{7}\\b"));
45-
driversLicensePatterns.put("DISTRICT OF COLUMBIA", Pattern.compile("\\b[0-9]{7}\\b"));
46-
driversLicensePatterns.put("FLORIDA", Pattern.compile("\\b[A-Z][0-9]{3}-[0-9]{3}-[0-9]{2}-[0-9]{3}\\b"));
47-
driversLicensePatterns.put("GEORGIA", Pattern.compile("\\b[0-9]{9}\\b"));
48-
driversLicensePatterns.put("HAWAII", Pattern.compile("\\b[0-9]{8}\\b"));
49-
driversLicensePatterns.put("IDAHO", Pattern.compile("\\b[A-Z]{2}[0-9]{6}[A-Z]\\b"));
50-
driversLicensePatterns.put("ILLINOIS", Pattern.compile("\\b[A-Z][0-9]{11}\\b"));
51-
driversLicensePatterns.put("INDIANA", Pattern.compile("\\b[0-9]{4}-[0-9]{2}-[0-9]{4}\\b"));
52-
driversLicensePatterns.put("IOWA", Pattern.compile("\\b([0-9]{9})|[0-9]{3}[A-Z]{2}[0-9]{4}\\b"));
53-
driversLicensePatterns.put("KANSAS", Pattern.compile("\\b[Kk][0-9]{2}-[0-9]{2}-[0-9]{4}\\b"));
54-
driversLicensePatterns.put("KENTUCKY", Pattern.compile("\\b[A-Z][0-9]{2}-[0-9]{3}-[0-9]{3}\\b"));
55-
driversLicensePatterns.put("LOUISIANA", Pattern.compile("\\b[00][0-9]{7}\\b"));
56-
driversLicensePatterns.put("MAINE", Pattern.compile("\\b([0-9]{7})|[0-9]{7}[Xx]\\b"));
57-
driversLicensePatterns.put("MARYLAND", Pattern.compile("\\b[A-Z]-[0-9]{3}-[0-9]{3}-[0-9]{3}-[0-9]{3}\\b"));
58-
driversLicensePatterns.put("MASSACHUSETTS", Pattern.compile("\\b[Ss][1][0-9]{8}\\b"));
59-
driversLicensePatterns.put("MICHIGAN", Pattern.compile("\\b[A-Z][0-9]{12}\\b"));
60-
driversLicensePatterns.put("MINNESOTA", Pattern.compile("\\b[A-Z][0-9]{12}\\b"));
61-
driversLicensePatterns.put("MISSISSIPPI", Pattern.compile("\\b[0-9]{9}\\b"));
62-
driversLicensePatterns.put("MISSOURI", Pattern.compile("\\b([A-Z][0-9]{5,9})\\b"));
63-
driversLicensePatterns.put("MONTANA", Pattern.compile("\\b[0-9]{13}\\b"));
64-
driversLicensePatterns.put("NEBRASKA", Pattern.compile("\\b[A-Z][0-9]{3,8}\\b"));
65-
driversLicensePatterns.put("NEVADA", Pattern.compile("\\b[0-9]{10}\\b"));
66-
driversLicensePatterns.put("NEW HAMPSHIRE", Pattern.compile("\\b[0-9]{2}[A-Z]{3}[0-9]{5}\\b"));
67-
driversLicensePatterns.put("NEW JERSEY", Pattern.compile("\\b[A-Z][0-9]{4}-[0-9]{5}-[0-9]{5}\\b"));
68-
driversLicensePatterns.put("NEW MEXICO", Pattern.compile("\\b[0-9]{9}\\b"));
69-
driversLicensePatterns.put("NEW YORK", Pattern.compile("\\b([0-9]{9})|([0-9]{3}-0-9]{3}-0-9]{3})\\b"));
70-
driversLicensePatterns.put("NORTH CAROLINA", Pattern.compile("\\b[0-9]{8,12}\\b"));
71-
driversLicensePatterns.put("NORTH DAKOTA", Pattern.compile("\\b([A-Z]{3}[0-9]{6})|([A-Z]{3}-[0-9]{2}-[0-9]{4})\\b"));
72-
driversLicensePatterns.put("OHIO", Pattern.compile("\\b[A-Z]{2}[0-9}{6}]\\b"));
73-
driversLicensePatterns.put("OKLAHOMA", Pattern.compile("\\b([A-Z][0-9]{8})|([A-Z][0-9]{9})\\b"));
74-
driversLicensePatterns.put("OREGON", Pattern.compile("\\b[0-9]{7}\\b"));
75-
driversLicensePatterns.put("PENNSYLVANIA", Pattern.compile("\\b([0-9]{8})|([0-9]{2}[ ][0-9]{3}[ ][0-9]{3})\\b"));
76-
driversLicensePatterns.put("RHODE ISLAND", Pattern.compile("\\b[0-9]{7}\\b"));
77-
driversLicensePatterns.put("SOUTH CAROLINA", Pattern.compile("\\b[0-9]{9}\\b"));
78-
driversLicensePatterns.put("SOUTH DAKOTA", Pattern.compile("\\b[0-9]{8}\\b"));
79-
driversLicensePatterns.put("TENNESSEE", Pattern.compile("\\b[0-9]{8,9}\\b"));
80-
driversLicensePatterns.put("TEXAS", Pattern.compile("\\b[0-9]{8}\\b"));
81-
driversLicensePatterns.put("UTAH", Pattern.compile("\\b[0-9]{4,10}\\b"));
82-
driversLicensePatterns.put("VERMONT", Pattern.compile("\\b([0-9]{8})|([0-9]{7}[A-Z])\\b"));
83-
driversLicensePatterns.put("VIRGINIA", Pattern.compile("\\b[A-Z][0-9]{2}-[0-9]{2}-[0-9]{4}\\b"));
84-
driversLicensePatterns.put("WASHINGTON", Pattern.compile("\\b[A-Z0-9]{12}\\b"));
85-
driversLicensePatterns.put("WEST VIRGINIA", Pattern.compile("\\b([0-9]{7})|([A-Z][0-9]{6})\\b"));
86-
driversLicensePatterns.put("WISCONSIN", Pattern.compile("\\b[A-Z][0-9]{13}\\b"));
87-
driversLicensePatterns.put("WYOMING", Pattern.compile("\\b([0-9]{9})|([0-9]{6}-[0-9]{3})\\b"));
37+
driversLicensePatterns.put("ALABAMA", Pattern.compile("\\b[\\d]{8}\\b")); // https://www.mvtrip.alabama.gov/News/ViewArticle/444
38+
driversLicensePatterns.put("ALASKA", Pattern.compile("\\b[\\d]{7}\\b"));
39+
driversLicensePatterns.put("ARIZONA", Pattern.compile("\\b([A-Z][\\d]{8})|([\\d]{9})\\b"));
40+
driversLicensePatterns.put("ARKANSAS", Pattern.compile("\\b[9][\\d]{7}\\b"));
41+
driversLicensePatterns.put("CALIFORNIA", Pattern.compile("\\b[A-Z][\\d]{7}\\b"));
42+
driversLicensePatterns.put("COLORADO", Pattern.compile("\\b[\\d]{2}-[\\d]{3}[\\d]{4}\\b"));
43+
driversLicensePatterns.put("CONNECTICUT", Pattern.compile("\\b[\\d]{9}\\b"));
44+
driversLicensePatterns.put("DELAWARE", Pattern.compile("\\b[\\d]{7}\\b"));
45+
driversLicensePatterns.put("DISTRICT OF COLUMBIA", Pattern.compile("\\b[\\d]{7}\\b"));
46+
driversLicensePatterns.put("FLORIDA", Pattern.compile("\\b[A-Z][\\d]{3}-[\\d]{3}-[\\d]{2}-[\\d]{3}\\b"));
47+
driversLicensePatterns.put("GEORGIA", Pattern.compile("\\b[\\d]{9}\\b"));
48+
driversLicensePatterns.put("HAWAII", Pattern.compile("\\b[\\d]{8}\\b"));
49+
driversLicensePatterns.put("IDAHO", Pattern.compile("\\b[A-Z]{2}[\\d]{6}[A-Z]\\b"));
50+
driversLicensePatterns.put("ILLINOIS", Pattern.compile("\\b[A-Z][\\d]{11}\\b"));
51+
driversLicensePatterns.put("INDIANA", Pattern.compile("\\b[\\d]{4}-[\\d]{2}-[\\d]{4}\\b"));
52+
driversLicensePatterns.put("IOWA", Pattern.compile("\\b([\\d]{9})|[\\d]{3}[A-Z]{2}[\\d]{4}\\b"));
53+
driversLicensePatterns.put("KANSAS", Pattern.compile("\\b[Kk][\\d]{2}-[\\d]{2}-[\\d]{4}\\b"));
54+
driversLicensePatterns.put("KENTUCKY", Pattern.compile("\\b[A-Z][\\d]{2}-[\\d]{3}-[\\d]{3}\\b"));
55+
driversLicensePatterns.put("LOUISIANA", Pattern.compile("\\b[00][\\d]{7}\\b"));
56+
driversLicensePatterns.put("MAINE", Pattern.compile("\\b([\\d]{7})|[\\d]{7}[Xx]\\b"));
57+
driversLicensePatterns.put("MARYLAND", Pattern.compile("\\b[A-Z]-[\\d]{3}-[\\d]{3}-[\\d]{3}-[\\d]{3}\\b"));
58+
driversLicensePatterns.put("MASSACHUSETTS", Pattern.compile("\\b[Ss][1][\\d]{8}\\b"));
59+
driversLicensePatterns.put("MICHIGAN", Pattern.compile("\\b[A-Z][\\d]{12}\\b"));
60+
driversLicensePatterns.put("MINNESOTA", Pattern.compile("\\b[A-Z][\\d]{12}\\b"));
61+
driversLicensePatterns.put("MISSISSIPPI", Pattern.compile("\\b[\\d]{9}\\b"));
62+
driversLicensePatterns.put("MISSOURI", Pattern.compile("\\b([A-Z][\\d]{5,9})\\b"));
63+
driversLicensePatterns.put("MONTANA", Pattern.compile("\\b[\\d]{13}\\b"));
64+
driversLicensePatterns.put("NEBRASKA", Pattern.compile("\\b[A-Z][\\d]{3,8}\\b"));
65+
driversLicensePatterns.put("NEVADA", Pattern.compile("\\b[\\d]{10}\\b"));
66+
driversLicensePatterns.put("NEW HAMPSHIRE", Pattern.compile("\\b[\\d]{2}[A-Z]{3}[\\d]{5}\\b"));
67+
driversLicensePatterns.put("NEW JERSEY", Pattern.compile("\\b[A-Z][\\d]{4}-[\\d]{5}-[\\d]{5}\\b"));
68+
driversLicensePatterns.put("NEW MEXICO", Pattern.compile("\\b[\\d]{9}\\b"));
69+
driversLicensePatterns.put("NEW YORK", Pattern.compile("\\b([\\d]{9})|([\\d]{3}-\\d]{3}-\\d]{3})\\b"));
70+
driversLicensePatterns.put("NORTH CAROLINA", Pattern.compile("\\b[\\d]{8,12}\\b"));
71+
driversLicensePatterns.put("NORTH DAKOTA", Pattern.compile("\\b([A-Z]{3}[\\d]{6})|([A-Z]{3}-[\\d]{2}-[\\d]{4})\\b"));
72+
driversLicensePatterns.put("OHIO", Pattern.compile("\\b[A-Z]{2}[\\d}{6}]\\b"));
73+
driversLicensePatterns.put("OKLAHOMA", Pattern.compile("\\b([A-Z][\\d]{8})|([A-Z][\\d]{9})\\b"));
74+
driversLicensePatterns.put("OREGON", Pattern.compile("\\b[\\d]{7}\\b"));
75+
driversLicensePatterns.put("PENNSYLVANIA", Pattern.compile("\\b([\\d]{8})|([\\d]{2}[ ][\\d]{3}[ ][\\d]{3})\\b"));
76+
driversLicensePatterns.put("RHODE ISLAND", Pattern.compile("\\b[\\d]{7}\\b"));
77+
driversLicensePatterns.put("SOUTH CAROLINA", Pattern.compile("\\b[\\d]{9}\\b"));
78+
driversLicensePatterns.put("SOUTH DAKOTA", Pattern.compile("\\b[\\d]{8}\\b"));
79+
driversLicensePatterns.put("TENNESSEE", Pattern.compile("\\b[\\d]{8,9}\\b"));
80+
driversLicensePatterns.put("TEXAS", Pattern.compile("\\b[\\d]{8}\\b"));
81+
driversLicensePatterns.put("UTAH", Pattern.compile("\\b[\\d]{4,10}\\b"));
82+
driversLicensePatterns.put("VERMONT", Pattern.compile("\\b([\\d]{8})|([\\d]{7}[A-Z])\\b"));
83+
driversLicensePatterns.put("VIRGINIA", Pattern.compile("\\b[A-Z][\\d]{2}-[\\d]{2}-[\\d]{4}\\b"));
84+
driversLicensePatterns.put("WASHINGTON", Pattern.compile("\\b[A-Z\\d]{12}\\b"));
85+
driversLicensePatterns.put("WEST VIRGINIA", Pattern.compile("\\b([\\d]{7})|([A-Z][\\d]{6})\\b"));
86+
driversLicensePatterns.put("WISCONSIN", Pattern.compile("\\b[A-Z][\\d]{13}\\b"));
87+
driversLicensePatterns.put("WYOMING", Pattern.compile("\\b([\\d]{9})|([\\d]{6}-[\\d]{3})\\b"));
8888

8989
this.contextualTerms = new HashSet<>();
9090
this.contextualTerms.add("license");

phileas-core/src/main/java/ai/philterd/phileas/services/filters/regex/EmailAddressFilter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public EmailAddressFilter(FilterConfiguration filterConfiguration, boolean onlyS
4444
super(FilterType.EMAIL_ADDRESS, filterConfiguration);
4545

4646
final Pattern emailAddressPattern = onlyStrictMatches
47-
? Pattern.compile("\\b(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\b])", Pattern.CASE_INSENSITIVE)
47+
? Pattern.compile("\\b(?:[a-z\\d!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z\\d!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z\\d](?:[a-z\\d-]*[a-z\\d])?\\.)+[a-z\\d](?:[a-z\\d-]*[a-z\\d])?|\\[(?:(?:25[0-5]|2[0-4][\\d]|[01]?[\\d][\\d]?)\\.){3}(?:25[0-5]|2[0-4][\\d]|[01]?[\\d][\\d]?|[a-z\\d-]*[a-z\\d]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\b])", Pattern.CASE_INSENSITIVE)
4848
: Pattern.compile("\\b[\\w.-]+?@(?:([a-zA-Z\\d\\-])+?\\.)+(?:[a-zA-Z\\d]{2,4})+\\b");
4949

5050
final FilterPattern email1 = new FilterPattern.FilterPatternBuilder(emailAddressPattern, 0.90).build();

phileas-core/src/main/java/ai/philterd/phileas/services/filters/regex/IpAddressFilter.java

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,8 @@ public IpAddressFilter(FilterConfiguration filterConfiguration) {
4646
final Pattern ipv6StdPattern =
4747
Pattern.compile(
4848
"" // start of string
49-
+ "(?:[0-9a-fA-F]{1,4}:){7}" // 7 blocks of a 1 to 4 digit hex number followed by double colon ':'
50-
+ "[0-9a-fA-F]{1,4}" // one more block of a 1 to 4 digit hex number
49+
+ "(?:[\\da-fA-F]{1,4}:){7}" // 7 blocks of a 1 to 4 digit hex number followed by double colon ':'
50+
+ "[\\da-fA-F]{1,4}" // one more block of a 1 to 4 digit hex number
5151
+ ""); // end of string
5252

5353
final FilterPattern ipv61 = new FilterPattern.FilterPatternBuilder(ipv6StdPattern, 0.90).build();
@@ -56,13 +56,13 @@ public IpAddressFilter(FilterConfiguration filterConfiguration) {
5656
Pattern.compile(
5757
"" // start of string
5858
+ "(" // 1st group
59-
+ "(?:[0-9A-Fa-f]{1,4}" // at least one block of a 1 to 4 digit hex number
60-
+ "(?::[0-9A-Fa-f]{1,4})*)?" // optional further blocks, any number
59+
+ "(?:[\\dA-Fa-f]{1,4}" // at least one block of a 1 to 4 digit hex number
60+
+ "(?::[\\dA-Fa-f]{1,4})*)?" // optional further blocks, any number
6161
+ ")"
6262
+ "::" // in the middle of the expression the two occurences of ':' are neccessary
6363
+ "(" // 2nd group
64-
+ "(?:[0-9A-Fa-f]{1,4}" // at least one block of a 1 to 4 digit hex number
65-
+ "(?::[0-9A-Fa-f]{1,4})*)?" // optional further blocks, any number
64+
+ "(?:[\\dA-Fa-f]{1,4}" // at least one block of a 1 to 4 digit hex number
65+
+ "(?::[\\dA-Fa-f]{1,4})*)?" // optional further blocks, any number
6666
+ ")"
6767
+ ""); // end of string
6868

@@ -72,13 +72,13 @@ public IpAddressFilter(FilterConfiguration filterConfiguration) {
7272
final Pattern ipv6MixedCompressedPattern =
7373
Pattern.compile("" // start of string
7474
+ "(" // 1st group
75-
+ "(?:[0-9A-Fa-f]{1,4}" // at least one block of a 1 to 4 digit hex number
76-
+ "(?::[0-9A-Fa-f]{1,4})*)?" // optional further blocks, any number
75+
+ "(?:[\\dA-Fa-f]{1,4}" // at least one block of a 1 to 4 digit hex number
76+
+ "(?::[\\dA-Fa-f]{1,4})*)?" // optional further blocks, any number
7777
+ ")"
7878
+ "::" // in the middle of the expression the two occurences of ':' are neccessary
7979
+ "(" // 2nd group
80-
+ "(?:[0-9A-Fa-f]{1,4}:" // at least one block of a 1 to 4 digit hex number followed by a ':' character
81-
+ "(?:[0-9A-Fa-f]{1,4}:)*)?" // optional further blocks, any number, all succeeded by ':' character
80+
+ "(?:[\\dA-Fa-f]{1,4}:" // at least one block of a 1 to 4 digit hex number followed by a ':' character
81+
+ "(?:[\\dA-Fa-f]{1,4}:)*)?" // optional further blocks, any number, all succeeded by ':' character
8282
+ ")"
8383
+ ""); // end of string
8484

@@ -87,7 +87,7 @@ public IpAddressFilter(FilterConfiguration filterConfiguration) {
8787
//this regex checks the ipv6 uncompressed part of a ipv6 mixed address
8888
final Pattern IPV6_MIXED_UNCOMPRESSED_REGEX =
8989
Pattern.compile("" // start of string
90-
+ "(?:[0-9a-fA-F]{1,4}:){6}" // 6 blocks of a 1 to 4 digit hex number followed by double colon ':'
90+
+ "(?:[\\da-fA-F]{1,4}:){6}" // 6 blocks of a 1 to 4 digit hex number followed by double colon ':'
9191
+ "" ); // end of string
9292

9393
final FilterPattern ipv64 = new FilterPattern.FilterPatternBuilder(IPV6_MIXED_UNCOMPRESSED_REGEX, 0.90).build();

0 commit comments

Comments
 (0)