只是一个简单的问题,我正在写一个正则表达式只允许字母(所以只是一个单词)和以下正则表达式允许空格,虽然我没有包含它们所以为什么它们包括在内?
([a-zA-Z])+
我必须将其更改为此(从Java粘贴):
([a-zA-Z]&&[^\\s])+
提供上下文 - 我尝试了这个并输入带空格的单词,它仍然打印为true:
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("Enter: ");
String s = in.next();
if (s.matches("[a-zA-Z]+")) {
System.out.println("TRUE");
}
}
答案 0 :(得分:2)
这将始终打印为“
”String s = in.next();
使用用户输入的第一个标记(由Scanner按空格分隔)。
最好使用:
String s = in.nextLine();
答案 1 :(得分:1)
扫描程序很可能在空格上拆分输入,因此您匹配部分字符串。您可以通过打印s
的值来确认这一点。正如其他人所提到的,您很可能需要Scanner.nextLine()
方法。
答案 2 :(得分:1)
Scanner
.next()
方法将获取下一个标记,默认情况下会分隔空格。请改用.nextLine()
。