If you don't use the default separator, "/" should not be special:

jshell> new AntPathMatcher("\0").extractUriTemplateVariables("tot{;}", "totoa");
$11 ==> {;=oa}
jshell> new AntPathMatcher("\0").extractUriTemplateVariables("tot{/}", "totoa");
|  Exception java.lang.IllegalStateException: Pattern "tot{/}" is not a match for "totoa"
|        at AntPathMatcher.extractUriTemplateVariables (AntPathMatcher.java:516)
|        at (#12:1)

Expected {/=oa}

note: the previous example is treated as an exact match:

jshell> new AntPathMatcher("\0").extractUriTemplateVariables("tot{/}", "tot{/}");
$19 ==> {}

See https://github.com/spring-projects/spring-framework/blob/17e6cf1cc1b57bd65bfae8da8cddc8314a89408d/spring-core/src/main/java/org/springframework/util/AntPathMatcher.java#L645 there are slashes hardcoded in there

Comment From: tafjwr

I worked on this issue in #33085

Comment From: bclozel

Closing in favor of #33085