The Unbearable Lightness of Java

Wildcard

Matching strings to wildcards pattern is useful and often needed. Using regular expression may help, but is not top performance solution. Wildcard class matches strings to wildcard patterns using * and ? characters, and that does very fast and good! Here are some examples:

Wildcard.match("CfgOptions.class", "*C*g*cl*");     	// true   
Wildcard.match("CfgOptions.class", "*g*c**s");      	// true!   
Wildcard.match("CfgOptions.class", "??gOpti*c?ass");    // true   
Wildcard.match("CfgOpti*class", "*gOpti\\*class");  	// true   
Wildcard.match("CfgOptions.class", "C*ti*c?a?*");   	// true

That is not all! Wildcard class supports path matching wildcards. It matches path against pattern using *, ? and ** wildcards. Both path and the pattern are tokenized on path separators (\ and /). '**' represents deep tree wildcard, as in Ant.

Wildcard.matchPath("/foo/soo/doo/boo", "/**/bo*");     		// true   
Wildcard.matchPath("/foo/one/two/three/boo", "**/t?o/**");	// true