Problem: In a Java program, you want to determine whether a String contains a pattern, and you’d rather use the String matches method than use the Pattern and Matcher classes.
Solution: Use the String matches method, but it’s very important to remember that the regex pattern you define must match the entire string.
A complete String “matches” example
Here’s a complete Java program that shows two patterns that attempt to match a String, including one that does work, and one that intentionally does not work:
/**
* Demonstrates how to use the String.matches() method, including
* the need to match the entire string in your patterns.
*/
public class StringMatches1
{
public static void main(String[] args)
{
String stringToSearch = "Four score and seven years ago our fathers ...";
// WRONG: this prints "false", because the search pattern doesn't
// match entire string
System.out.println("Try 1: " + stringToSearch.matches("seven"));
// CORRECT: this prints "true" because the pattern does match the
// entire string
System.out.println("Try 2: " + stringToSearch.matches(".*seven.*"));
}
}
The output from this program is:
Try 1: false Try 2: true
Discussion
While this example is trivial, it’s intentionally trivial, so I can demonstrate a common problem that developers run into when using the matches method, specifically the need to define a pattern that matches the entire String that you’re trying to test against.
In a more complicated example you might try to look for a pattern like this:
<code>\\S+</code>
But again, you need to make sure you add the extra characters to make sure your pattern matches the entire line.

