2012-12-25 119 views
0

我已經對Java代碼正則表達式 - Java的工作不

System.out.println("...Somtime".matches("^[^a-zA-Z]"));

其中返回false線。爲什麼?任何人都可以幫忙嗎?

+2

因爲整個字符串應該匹配你的表情 – hoaz

+0

嗨haoz:謝謝,真的很有幫助 – zwang

回答

3
String.matches("regex") 

此方法將對陣整個字符串的正則表達式。如果字符串匹配正則表達式,它會返回truefalse否則

System.out.println("...Somtime".matches("^[^a-zA-Z]{3}[a-zA-Z]+")); 

這裏使用的是三個點{3},這回true

System.out.println("Somtime".matches("^[^a-zA-Z]")); 

其返回false

5

String#matches匹配在兩端,所以你的模式應該覆蓋整個字符串。而且你也不需要在開始時給那些主播(Caret - ^)。這是隱含的。

現在,由於您的前三個字符匹配 - [^a-zA-Z],而後面的字符匹配 - [a-zA-Z]

所以,也許你想: -

"...Somtime".matches("[^a-zA-Z]{3}[a-zA-Z]+")