0

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

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

    }
4

3 回答 3

2

这将始终打印 TRUE 为

String s = in.next();

使用用户输入的第一个令牌(由 Scanner 用空格分隔)。

更好地使用:

String s = in.nextLine();
于 2012-08-21T00:44:59.520 回答
1

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

于 2012-08-21T00:45:13.717 回答
1

Scanner .next()方法将获取下一个令牌,默认情况下将按空格分割。改为使用.nextLine()

于 2012-08-21T00:46:23.143 回答