Regular Expression reserved letters

A

adrianae

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
 
C

Chris Dollin

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.
 
D

Daniel Pitts

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.
 
D

Daniel Pitts

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.
 
A

adrianae

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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,576
Members
45,054
Latest member
LucyCarper

Latest Threads

Top