用Java中的Pattern和Matcher查找大写字符

时间:2013-11-10 13:45:18

标签: java regex

我知道这是一个虚拟问题;但我是新手在Java中使用正则表达式。我的代码就是这样。

    Pattern p = Pattern.compile("[A-Z]+");
    Matcher m = p.matcher ("AsdGqw");
    if (m.find()) {
        System.out.println(m.group());
    }

我想要大写字符(我的代码为“AG”);但它只打印'A'。当我调试时,我看到我的匹配器的最后匹配也是'A',我不知道为什么。我的正则表达式在正则表达式测试中运行良好。

我也想知道哪一个在查找大写字符方面有更好的表现。正则表达式还是循环?

对不起我的虚假问题。

2 个答案:

答案 0 :(得分:2)

您应该按如下方式进行更改:

如果条件仅返回第一个,则需要使用而contidion 将它们全部返回。

来自

if (m.find()) {
            System.out.println(m.group());
        }

    while (m.find()) {
            System.out.println(m.group());
        }

答案 1 :(得分:1)

以下是获取输出的一种方法,即只有来自给定输入的大写字母没有任何循环

Pattern p = Pattern.compile("[^A-Z]+");
Matcher m = p.matcher ("AsdGqw");
System.out.println("=> " + m.replaceAll("")); //=> AG