2

我知道这确实是个愚蠢的问题;但我是在 Java 中使用正则表达式的新手。我的代码是这样的。

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

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

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

对不起我的假问题。

4

2 回答 2

2

您应该进行如下更改:

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

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

    while (m.find()) {
            System.out.println(m.group());
        }
于 2013-11-10T13:48:16.383 回答
1

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

Pattern p = Pattern.compile("[^A-Z]+");
Matcher m = p.matcher ("AsdGqw");
System.out.println("=> " + m.replaceAll("")); //=> AG
于 2013-11-10T14:01:18.430 回答