commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From sebb <seb...@gmail.com>
Subject Re: [lang] Wildcard regex
Date Sat, 09 Oct 2010 13:13:31 GMT
On 9 October 2010 12:33, Stephen Colebourne <scolebourne@joda.org> wrote:
> No, the wildcard is used for a database search. Find me all names
> matching "Foo*". This is not for [io].

But where do humans get the idea that * and ? are wildcards?

>
> The oro code does look reasonable I'd say.

Agreed, it could be adapted for Commons.

However, whether the syntax it supports is universal I don't know.

I think it's a useful addition, but the syntax needs to be carefully documented.

And it would be useful if there were versions for different OSes, to
allow filename matching using the standard for that OS.

> Stephen
>
>
> On 9 October 2010 12:25, sebb <sebbaz@gmail.com> wrote:
>> What does the regex represent? A filename?
>>
>> If so, then maybe the code belongs in IO rather than Lang.
>>
>> Also, filename globbing is not consistent across OSes.
>>
>> On 8 October 2010 15:32, Stephen Colebourne <scolebourne@joda.org> wrote:
>>> Human users enter wildcards * and ? (because regex is too complex). In
>>> my case, I'm passing it to MongoDB, which needs regex.
>>>
>>> Stephen
>>>
>>>
>>> On 8 October 2010 15:10, Paul Benedict <pbenedict@apache.org> wrote:
>>>> Can I get some sense of use case? What would you use it for? Just curious.
>>>>
>>>> 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
>>>
>>>
>>
>> ---------------------------------------------------------------------
>> 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