从此代码中获取奇怪的输出。
正则表达式是否应该在第一个'3'上断开,因为它是所有字符后的第一个数字?
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class CaptureGroups1 {
public static void main(String args[]) {
String line = "This order was placed for QT3000! OK?";
String pattern = "(.*)(\\d+)(.*)";
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(line);
int count = m.groupCount();
System.out.println("Number of capturing groups: " + count + '\n');
if (m.find()) {
for (int i = 1; i <= count; i++) {
System.out.println("Found value(capturint group(" + i + ")): " + m.group(i));
}
} else {
System.out.println("Not Found");
}
}
}
答案 0 :(得分:0)
如果要捕获数字组,可能会从(.*)
中删除括号可以帮助您。实际上,你甚至不需要它们:
String pattern = "(\\d+)";
答案 1 :(得分:0)
我猜你的意思是错的。 我怀疑你在寻找这个。
String pattern = "(\\D*)(\\d+)(.*)";
也许你想检查不情愿的量词。
http://docs.oracle.com/javase/tutorial/essential/regex/quant.html