commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Matt Benson <gudnabr...@gmail.com>
Subject Re: [lang] Wildcard regex
Date Fri, 08 Oct 2010 14:29:54 GMT

On Oct 8, 2010, at 9:10 AM, Paul Benedict wrote:

> Can I get some sense of use case? What would you use it for? Just curious.
> 

I've got code like this as well.  It allows you to take a pattern containing glob-style wildcards
and convert to a regex that you can then use to do your matching for you.  I would also suggest
including support for Ant-style wildcards if possible as well since those have achieved some
ubiquity in the Java ecosystem.

-Matt

> On Fri, Oct 8, 2010 at 9:06 AM, Stephen Colebourne <scolebourne@joda.org> wrote:
>> 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: dev-unsubscribe@commons.apache.org
>> For additional commands, e-mail: dev-help@commons.apache.org
>> 
>> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
> For additional commands, e-mail: dev-help@commons.apache.org
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org


Mime
View raw message