Ant path style patterns
JavaPathAntPattern MatchingJava Problem Overview
What are the rules for Ant path style patterns.
The Ant site itself is surprisingly uninformative.
Java Solutions
Solution 1 - Java
Ant-style path patterns matching in [tag:spring-framework]:
>The mapping matches URLs using the following rules:
>
>- ?
matches one character
>- *
matches zero or more characters
>- **
matches zero or more 'directories' in a path
>- {spring:[a-z]+}
matches the regexp [a-z]+
as a path variable named "spring"
>
>Some examples:
>
>- com/t?st.jsp
- matches com/test.jsp but also com/tast.jsp
or com/txst.jsp
>- com/*.jsp
- matches all .jsp
files in the com
directory
>- com/**/test.jsp
- matches all test.jsp
files underneath the com
path
>- org/springframework/**/*.jsp
- matches all .jsp
files underneath the org/springframework path
>- org/**/servlet/bla.jsp
- matches org/springframework/servlet/bla.jsp
but also org/springframework/testing/servlet/bla.jsp
and org/servlet/bla.jsp
>- com/{filename:\\w+}.jsp
will match com/test.jsp
and assign the value test
to the filename
variable
http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/util/AntPathMatcher.html
Solution 2 - Java
I suppose you mean how to use path patterns
If it is about whether to use slashes or backslashes these will be translated to path-separators on the platform used during execution-time.
Solution 3 - Java
Wildcards
The utility uses three different wildcards.
+----------+-----------------------------------+
| Wildcard | Description |
+----------+-----------------------------------+
| * | Matches zero or more characters. |
| ? | Matches exactly one character. |
| ** | Matches zero or more directories. |
+----------+-----------------------------------+
Solution 4 - Java
Most upvoted answer by @user11153
using tables for a more readable format.
The mapping matches URLs using the following rules:
+-----------------+---------------------------------------------------------+
| Wildcard | Description |
+-----------------+---------------------------------------------------------+
| ? | Matches exactly one character. |
| * | Matches zero or more characters. |
| ** | Matches zero or more 'directories' in a path |
| {spring:[a-z]+} | Matches regExp [a-z]+ as a path variable named "spring" |
+-----------------+---------------------------------------------------------+
Some examples:
+------------------------------+--------------------------------------------------------+
| Example | Matches: |
+------------------------------+--------------------------------------------------------+
| com/t?st.jsp | com/test.jsp but also com/tast.jsp or com/txst.jsp |
| com/*.jsp | All .jsp files in the com directory |
| com/**/test.jsp | All test.jsp files underneath the com path |
| org/springframework/**/*.jsp | All .jsp files underneath the org/springframework path |
| org/**/servlet/bla.jsp | org/springframework/servlet/bla.jsp |
| also: | org/springframework/testing/servlet/bla.jsp |
| also: | org/servlet/bla.jsp |
| com/{filename:\\w+}.jsp | com/test.jsp & assign value test to filename variable |
+------------------------------+--------------------------------------------------------+
Solution 5 - Java
As @user11153 mentioned, Spring's AntPathMatcher implements and documents the basics of Ant-style path pattern matching.
In addition, Java 7's nio APIs added some built in support for basic pattern matching via [FileSystem.getPathMatcher][2]
[2]: https://docs.oracle.com/javase/7/docs/api/java/nio/file/FileSystem.html#getPathMatcher(java.lang.String) "FileSystem.getPathMatcher"