I don't think comons lang has a routine for converting a standard
wildcard string (with * and ?) to a regex.
Here is a first suggestion, although I'm sure it can be improved.
public Pattern createPattern(String text) {
StringTokenizer tkn = new StringTokenizer(text, "?*", true);
StringBuilder buf = new StringBuilder(text.length() + 10);
buf.append('^');
boolean lastStar = false;
while (tkn.hasMoreTokens()) {
String str = tkn.nextToken();
if (str.equals("?")) {
buf.append('.');
lastStar = false;
} else if (str.equals("*")) {
if (lastStar == false) {
buf.append(".*");
}
lastStar = true;
} else {
buf.append(Pattern.quote(str));
lastStar = false;
}
}
buf.append('$');
return Pattern.compile(buf.toString(), Pattern.CASE_INSENSITIVE);
}
Other possile conversions would be * and ? to databse wildcards, so
perhaps there is scope for a few related methods here?
Stephen
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]