了解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() 方法來確定如果正規表示式與輸入文字中的任何子字串相符。此方法涉及以下步驟:
示例如下:
Pattern p = Pattern.compile("[a-z]"); Matcher m = p.matcher(inputstring); if (m.find()) // match found
如果要確保輸入只包含小寫字母,可以使用下列正規表示式:^[a-z] $ 。不要忘記使用 .find() 而不是 .matches()。
以上是為什麼Java的`String.matches()`無法匹配子字串,如何使用正規表示式正確匹配子字串?的詳細內容。更多資訊請關注PHP中文網其他相關文章!