Java String FAQ: How can I tell if a Java String contains a given regular expression (regex) pattern?
In a Java program, you want to determine whether a String contains a case-insensitive regular expression (regex). You don't want to manipulate the String or extract the match, you just want to determine whether the pattern exists at least one time in the given String.
Solution: Use the Java Pattern and Matcher classes, supply a regular expression (regex) to the Pattern class, and use the Pattern.CASE_INSENSITIVE
flag of the Pattern class. Then use the find
method of the Matcher class to see if there is a match.
This is shown in the following Java source code example:
import java.util.regex.Matcher; import java.util.regex.Pattern; /** * Find out whether a given String contains a simple regular * expression (regex). */ public class PatternMatcherFind3Regex { public static void main(String[] args) { // the string we want to search String stringToSearch = "FOUR SCORE AND SEVEN YEARS AGO OUR FATHERS ..."; // search for this simple pattern String patternToSeachFor = " ye.* "; // set everything up Pattern p = Pattern.compile(patternToSeachFor, Pattern.CASE_INSENSITIVE); Matcher m = p.matcher(stringToSearch); // now see if we find a match if (m.find()) System.out.println("Found a match"); else System.out.println("Did not find a match"); } }
The output from this program is:
Found a match
Discussion
This is a simple example intended to show how to use a simple regular expression and the Pattern.CASE_INSENSITIVE
flag when creating a Pattern. In this case the regular expression I used was this:
" ye.* "
Combined with the Pattern.CASE_INSENSITIVE
flag, this regular expression can be read as, "Ignoring upper and lower case, look for a blank space, followed by the characters 'y' and 'e', followed by many occurrences of any character, and then one more blank space."
Note that when using the find
method there may be more than one occurrence of your pattern in the Java String
. In this example I'm not worried about that, I'm just looking to see if I have at least one match.
Of course your regular expressions can be as complicated as you need them to be, and I will show many more regular expression patterns on this blog.