正则表达式 - 为什么这允许空格?

时间:2012-08-21 00:35:34

标签: java regex

只是一个简单的问题,我正在写一个正则表达式只允许字母(所以只是一个单词)和以下正则表达式允许空格,虽然我没有包含它们所以为什么它们包括在内?

([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");
        }

    }

3 个答案:

答案 0 :(得分:2)

这将始终打印为“

String s = in.next();

使用用户输入的第一个标记(由Scanner按空格分隔)。

最好使用:

String s = in.nextLine();

答案 1 :(得分:1)

扫描程序很可能在空格上拆分输入,因此您匹配部分字符串。您可以通过打印s的值来确认这一点。正如其他人所提到的,您很可能需要Scanner.nextLine()方法。

答案 2 :(得分:1)

Scanner .next()方法将获取下一个标记,默认情况下会分隔空格。请改用.nextLine()