正規表示式在 String.matches()中不起作用
問題:
A用戶編寫了一個程式碼片段來匹配僅包含小寫字母的字串字母:
String[] words = {"{apf","hum_","dkoe","12f"}; for(String s:words) { if(s.matches("[a-z]")) { System.out.println(s); } }
但是,儘管期望輸出為“dkoe”,但程式碼不會列印任何內容。
答案:
相反顧名思義,Java 的 String.matches() 方法會將整個輸入字串與正規表示式進行比對。若要僅符合字串的一部分,請使用 Pattern 和 Matcher:
Pattern p = Pattern.compile("[a-z]+"); Matcher m = p.matcher(inputString); if (m.find()) // match
或者,如果要符合整個字串,請在 matches() 方法中將 a 附加到字元類別:
if(s.matches("[a-z]+"))
或使用完整的正規表示式模式:
if(s.matches("^[a-z]+$"))
這將匹配僅包含小寫字母的字串,如^ 和 $ 錨確保匹配覆蓋整個輸入字串。
以上是為什麼我的正規表示式在 Java 的 String.matches() 中不起作用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!