Home > Java > javaTutorial > Why Does Java\'s `String.matches()` Fail to Match Substrings, and How Can I Correctly Match Substrings Using Regular Expressions?

Why Does Java\'s `String.matches()` Fail to Match Substrings, and How Can I Correctly Match Substrings Using Regular Expressions?

DDD
Release: 2024-12-02 03:14:15
Original
879 people have browsed it

Why Does Java's `String.matches()` Fail to Match Substrings, and How Can I Correctly Match Substrings Using Regular Expressions?

Understanding the Discrepancy in String.matches()

When attempting to validate strings using regular expressions in Java, you may encounter an unexpected behavior with the String.matches() method. While the intention of this method implies matching a substring within a string, it actually attempts to match the entire string against the provided regular expression.

Consider the following code snippet:

String[] words = {"{apf","hum_","dkoe","12f"};
for(String s:words)
{
    if(s.matches("[a-z]"))
    {
        System.out.println(s);
    }
}
Copy after login

As you've noticed, this code fails to print the expected output ("dkoe") because it is not matching the desired substring but rather checking if the entire string contains only lowercase letters.

The Solution: Using Pattern and Matcher

To resolve this issue, you should use the Pattern and Matcher classes along with the .find() method to determine if a regular expression matches any substring within the input text. This approach involves the following steps:

  1. Create a Pattern object by compiling the regular expression.
  2. Create a Matcher object by applying the pattern to the input string.
  3. Use the .find() method of the matcher to check if the pattern matches any substring.

Here's an example:

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

If you want to ensure that the input only contains lowercase letters, you can use the following regular expression: ^[a-z] $. Don't forget to use .find() instead of .matches().

The above is the detailed content of Why Does Java\'s `String.matches()` Fail to Match Substrings, and How Can I Correctly Match Substrings Using Regular Expressions?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template