我有一行Java代码
System.out.println("...Somtime".matches("^[^a-zA-Z]"));
返回false。为什么?任何人都可以帮忙吗?
答案 0 :(得分:5)
String#matches
匹配,因此您的模式应覆盖整个字符串。而且您也不需要在开头给出这些锚点(Caret - ^)
。这是隐含的。
现在,由于您的前三个字符匹配 - [^a-zA-Z]
,而后面的字符匹配 - [a-zA-Z]
。
所以,你可能想要: -
"...Somtime".matches("[^a-zA-Z]{3}[a-zA-Z]+")
答案 1 :(得分:3)
String.matches("regex")
此方法将正则表达式与WHOLE字符串匹配。如果字符串与正则表达式匹配,则会返回true
和false
否则
System.out.println("...Somtime".matches("^[^a-zA-Z]{3}[a-zA-Z]+"));
此处有三个点,您正在使用{3},此返回true
System.out.println("Somtime".matches("^[^a-zA-Z]"));
它返回false