Package org.apache.wicket.application
Class WildcardMatcherHelper
- java.lang.Object
-
- org.apache.wicket.application.WildcardMatcherHelper
-
public class WildcardMatcherHelper extends Object
This class is an utility class that perform wildcard-patterns matching and isolation.- Version:
- $Id: WildcardMatcherHelper.java 420832 2006-07-11 13:11:02Z cziegeler $
-
-
Constructor Summary
Constructors Constructor Description WildcardMatcherHelper()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static Map<String,String>
match(String pat, String str)
Match a pattern against a string and isolates wildcard replacement into aMap
.
-
-
-
Field Detail
-
ESC
public static final char ESC
Escape character- See Also:
- Constant Field Values
-
PATHSEP
public static final char PATHSEP
Default path separator: "."- See Also:
- Constant Field Values
-
STAR
public static final char STAR
any char- See Also:
- Constant Field Values
-
-
Constructor Detail
-
WildcardMatcherHelper
public WildcardMatcherHelper()
-
-
Method Detail
-
match
public static Map<String,String> match(String pat, String str)
Match a pattern against a string and isolates wildcard replacement into aMap
.
Here is how the matching algorithm works:- The '*' character, meaning that zero or more characters (excluding the path separator '/') are to be matched.
- The '**' sequence, meaning that zero or more characters (including the path separator '/') are to be matched.
- The '\*' sequence is honored as a literal '*' character, not a wildcard
When more than two '*' characters, not separated by another character, are found their value is considered as '**' and immediate succeeding '*' are skipped.
The '**' wildcard is greedy and thus the following sample cannot match:- pattern
- STAR,STAR,PATHSEP,STAR,PATHSEP,STAR,STAR (why can't I express it literally?)
- string
- foo/bar/baz/bug
A more advance algorithm could certainly check whether there is an other literal later in the pattern to ev. match in string but I'll leave this exercise to someone else ATM if one needs such.- Parameters:
pat
- The pattern string.str
- The string to math against the pattern- Returns:
- a
Map
containing the representation of the extracted pattern. The extracted patterns are keys in theMap
from left to right beginning with "1" for the left most, "2" for the next, a.s.o. The key "0" is the string itself. If the return value is null, string does not match to the pattern .
-
-