我知道这是一个虚拟问题;但我是新手在Java中使用正则表达式。我的代码就是这样。
Pattern p = Pattern.compile("[A-Z]+");
Matcher m = p.matcher ("AsdGqw");
if (m.find()) {
System.out.println(m.group());
}
我想要大写字符(我的代码为“AG”);但它只打印'A'。当我调试时,我看到我的匹配器的最后匹配也是'A',我不知道为什么。我的正则表达式在正则表达式测试中运行良好。
我也想知道哪一个在查找大写字符方面有更好的表现。正则表达式还是循环?
对不起我的虚假问题。
答案 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