首頁 > Java > java教程 > 為什麼Java的`String.matches()`無法匹配子字串,如何使用正規表示式正確匹配子字串?

為什麼Java的`String.matches()`無法匹配子字串,如何使用正規表示式正確匹配子字串?

DDD
發布: 2024-12-02 03:14:15
原創
879 人瀏覽過

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

了解String.matches() 中的差異

嘗試在Java 中使用正規表示式驗證字串時,您可能會遇到意外行為使用String.matches() 方法。雖然此方法的目的意味著匹配字串中的子字串,但它實際上嘗試將整個字串與提供的正規表示式進行匹配。

考慮以下程式碼片段:

String[] words = {"{apf","hum_","dkoe","12f"};
for(String s:words)
{
    if(s.matches("[a-z]"))
    {
        System.out.println(s);
    }
}
登入後複製

As您已經注意到,此程式碼無法列印預期的輸出(「dkoe」),因為它與所需的子字串不匹配,而是檢查整個字串是否僅包含小寫字母

解:使用Pattern 和Matcher

要解決此問題,您應該使用 Pattern 和 Matcher 類別以及 .find() 方法來確定如果正規表示式與輸入文字中的任何子字串相符。此方法涉及以下步驟:

  1. 透過編譯正規表示式來建立 Pattern 物件。
  2. 透過將模式套用至輸入字串來建立 Matcher 物件。
  3. 使用匹配器的.find()方法檢查模式是否匹配任何

示例如下:

Pattern p = Pattern.compile("[a-z]");
Matcher m = p.matcher(inputstring);
if (m.find())
    // match found
登入後複製

如果要確保輸入只包含小寫字母,可以使用下列正規表示式:^[a-z] $ 。不要忘記使用 .find() 而不是 .matches()。

以上是為什麼Java的`String.matches()`無法匹配子字串,如何使用正規表示式正確匹配子字串?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板