Regex doesn't work in String.matches()


I have this small piece of code

String[] words = {"{apf","hum_","dkoe","12f"};
for(String s:words)

Supposed to print


but it prints nothing!!

This question is tagged with java regex

~ Asked on 2012-01-19 09:02:40

The Best Answer is


Welcome to Java's misnamed .matches() method... It tries and matches ALL the input. Unfortunately, other languages have followed suit :(

If you want to see if the regex matches an input text, use a Pattern, a Matcher and the .find() method of the matcher:

Pattern p = Pattern.compile("[a-z]");
Matcher m = p.matcher(inputstring);
if (m.find())
    // match

If what you want is indeed to see if an input only has lowercase letters, you can use .matches(), but you need to match one or more characters: append a + to your character class, as in [a-z]+. Or use ^[a-z]+$ and .find().

~ Answered on 2012-01-19 09:08:16


[a-z] matches a single char between a and z. So, if your string was just "d", for example, then it would have matched and been printed out.

You need to change your regex to [a-z]+ to match one or more chars.

~ Answered on 2012-01-19 09:04:46

Most Viewed Questions: