2012-12-25 117 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]+")