2017-05-30 39 views
0

我想查找是否所有基於大小寫的字符在非基礎字符後面。即非基於案例的字符是大寫和所有其他基於案例的字符是小寫使用string.matches的正則表達式總是返回false雖然我期待真

例如:什麼是你的測試

我所定義的正則表達式爲:\b[A-Z]

String alphaCheck="What Is Your Test"; 
System.out.println(alphaCheck.matches("\b[A-Z]")); 
+0

有多個單詞邊界,你想要比較它的'String'必須與表達式完全匹配。我認爲你最好使用'Matcher'和''find'功能。否則你的表達式必須是'「。* \ b [AZ]。*」'爲了表達式匹配你的'String'的其餘部分。 – SomeJavaGuy

+1

我不太瞭解你的問題 – TheLostMind

+0

這裏是我的代碼System.out .println(alphaCheck.matches( 「\ b [AZ]」)); –

回答

1

([A-Z][a-z]+(\\s+|$))+會爲你工作:

public static void main(String[] args) { 
    String s = "What Is Your Test"; 
    System.out.println(s.matches("([A-Z][a-z]+(\\s+|$))+")); 

    String s2 = "What is"; 
    System.out.println(s2.matches("([A-Z][a-z]+(\\s+|$))+")); 
} 

O/P:

true 
false 
0

正如你可以用消極的方式,檢查是否有任何不適合您的標準另一種選擇:

String alphaCheck="What Is Your Test"; 
System.out.println(!alphaCheck.matches(".*\\b[a-z]+.*")); 
alphaCheck="What Is Your test"; 
System.out.println(!alphaCheck.matches(".*\\b[a-z]+.*")); 
alphaCheck="what Is Your Test"; 
System.out.println(!alphaCheck.matches(".*\\b[a-z]+.*")); 

O/P:

true 
false 
false 

您只需要將String#matches返回爲表示它是否正確。

+0

非常感謝你:-) –

相關問題