Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   Java (http://www.velocityreviews.com/forums/f30-java.html)
-   -   Regular Expression reserved letters (http://www.velocityreviews.com/forums/t503077-regular-expression-reserved-letters.html)

adrianae@gmx.ch 04-30-2007 02:18 PM

Regular Expression reserved letters
 
Hi all

I have the following problem.

I have to test if a text matches with another text. For this i use the
matches-Method of the String class in the way:

String a = "Hello world";
String b = "anytext goes here_-)_some m[]ore text goes{}here.";

if (a.tolowercase().matches(b)) {
// some code goes here
}

The problem ist, that e.g. ),[],{} are reserved words in regex. To use
them in filter expressions i have to escape them with \). But how to
know what all i have to escape? There are so many other reserved
letters and signs in regex and the text i have to compare can contain
everything.

So my questions:
Is there in any class any helper function which knows all the reserved
sings and letters and that supplies a function which escapes me all
automatically?

Thank you
Adrian


Chris Dollin 04-30-2007 02:35 PM

Re: Regular Expression reserved letters
 
adrianae@gmx.ch wrote:

> The problem ist, that e.g. ),[],{} are reserved words in regex. To use
> them in filter expressions i have to escape them with \). But how to
> know what all i have to escape?


Read the regexp documentation.

--
Jena user conference, September 2007: http://hpl.hp.com/conferences/juc2007/

Hewlett-Packard Limited registered no:
registered office: Cain Road, Bracknell, Berks RG12 1HN 690597 England


Daniel Pitts 04-30-2007 02:35 PM

Re: Regular Expression reserved letters
 
On Apr 30, 7:18 am, adria...@gmx.ch wrote:
> Hi all
>
> I have the following problem.
>
> I have to test if a text matches with another text. For this i use the
> matches-Method of the String class in the way:
>
> String a = "Hello world";
> String b = "anytext goes here_-)_some m[]ore text goes{}here.";
>
> if (a.tolowercase().matches(b)) {
> // some code goes here
>
> }
>
> The problem ist, that e.g. ),[],{} are reserved words in regex. To use
> them in filter expressions i have to escape them with \). But how to
> know what all i have to escape? There are so many other reserved
> letters and signs in regex and the text i have to compare can contain
> everything.
>
> So my questions:
> Is there in any class any helper function which knows all the reserved
> sings and letters and that supplies a function which escapes me all
> automatically?
>
> Thank you
> Adrian


Well, there are two approaches to this...

One, is use a non-regex comparison. If you don't need regex, then
don't use regex. Regex is significantly slower than using indexOf or
equals.

If, on the other hand, you have a portion of an expresion that must be
regex, and a portion that must be litaral, I suggest you read the
documentation here: <http://java.sun.com/j2se/1.4.2/docs/api/java/util/
regex/Pattern.html>

That documentation will tell you what codes need to be escape, and
ironically, you can use replaceAll to appropriately escape the string.

Hope this helps,
Daniel.


Daniel Pitts 04-30-2007 02:47 PM

Re: Regular Expression reserved letters
 
On Apr 30, 7:35 am, Daniel Pitts <googlegrou...@coloraura.com> wrote:
> On Apr 30, 7:18 am, adria...@gmx.ch wrote:
> > Hi all

>
> > I have the following problem.

>
> > I have to test if a text matches with another text. For this i use the
> > matches-Method of the String class in the way:

>
> > String a = "Hello world";
> > String b = "anytext goes here_-)_some m[]ore text goes{}here.";

>
> > if (a.tolowercase().matches(b)) {
> > // some code goes here

>
> > }

Oops, I should have suggested using:
if (a.equalsIgnoreCase(b)) {
}

Hope this helps too,
Danie.


adrianae@gmx.ch 05-01-2007 02:22 PM

Re: Regular Expression reserved letters
 
Hi Daniel

Thank you for your answer.

In my case the best solution is to supply one more parameter
indicating if i want to compare by regex or with equals().

Adrian



All times are GMT. The time now is 11:29 PM.

Powered by vBulletin®. Copyright ©2000 - 2014, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.