mirror of
https://github.com/MarginaliaSearch/MarginaliaSearch.git
synced 2025-02-23 13:09:00 +00:00
![]() Roll back to JDK 21 for now, and make Java version configurable in the root build.gradle The project has run into no less than three distinct show-stopping bugs in JDK22, across multiple vendors, and gradle still doesn't fully support it, meaning you need multiple JDK versions installed. |
||
---|---|---|
.. | ||
java/nu/marginalia/gregex | ||
build.gradle | ||
readme.md |
Guarded Regex
This is a simple library for creating guarded regular expressions. Pattern matching in Java is pretty slow even with compiled regular expressions.
Guarding them with a startsWith()
, endsWith()
or contains()
can be an order of magnitude
faster, but leads to an unfortunate spreading out of the logic across the pattern and the guard
condition.
Guarded regexes aims to fix this. Instead of code like
Pattern pattern = Pattern.compile("[123]?foo(bar|baz){2,5}");
void ifTheThingDoTheThing(String str) {
if (str.contains("foo") && pattern.matcher(str).matches()) {
doTheThing();
}
}
you get the more expressive variant
GuardedRegex thingPredicate =
GuardedRegexFactory.contains("foo", "[123]?foo(bar|baz){2,5}");
void ifTheThingDoTheThing(String str) {
if (thingPredicate.test(str)) {
doTheThing();
}
}