diff --git a/avaje-jex/src/main/java/io/avaje/jex/routes/PathSegmentParser.java b/avaje-jex/src/main/java/io/avaje/jex/routes/PathSegmentParser.java index f450f449..27fc8ff4 100644 --- a/avaje-jex/src/main/java/io/avaje/jex/routes/PathSegmentParser.java +++ b/avaje-jex/src/main/java/io/avaje/jex/routes/PathSegmentParser.java @@ -5,18 +5,16 @@ import java.util.regex.MatchResult; import java.util.regex.Pattern; -import static java.util.stream.Collectors.toList; - final class PathSegmentParser { private static final PathSegment WILDCARD = new PathSegment.Wildcard(); private static final String[] ADJACENT_VIOLATIONS = {"*{", "*<", "}*", ">*"}; - private static final String NAME_STR = "[a-zA-Z0-9_-]+"; - private static final String NAME_OPT = "([:][^/^{]+([{][0-9]+[}])?)?"; // Optional regex - private static final String SLASH_STR = "[<]" + NAME_STR + "[>]"; - private static final String PARAM_STR = "[{]" + NAME_STR + NAME_OPT + "[}]"; + private static final String NAME_STR = "[\\w-]+"; + private static final String NAME_OPT = "(:[^/^{]+([{]\\d+})?)?"; // Optional regex + private static final String SLASH_STR = "<" + NAME_STR + ">"; + private static final String PARAM_STR = "[{]" + NAME_STR + NAME_OPT + "}"; private static final String MULTI_STR = "(" + PARAM_STR + "|" + SLASH_STR + "|[*]|" + "[^{ multi(String input) { - return MATCH_MULTI.matcher(input).results() - .map(MatchResult::group) - .collect(toList()); + return MATCH_MULTI.matcher(input).results().map(MatchResult::group).toList(); } static boolean matchLiteral(String segment) { @@ -130,5 +126,4 @@ boolean endCharOnly(char c) { // last char matches and no prior matching char return segment.indexOf(c) == segment.length() - 1; } - }