我在TutorialsPoint看到一段代码,有些地方让我感到困惑…请看下面的代码:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexMatches
{
public static void main( String args[] ){
// String to be scanned to find the pattern.
String line = "This order was placed for QT3000! OK?";
String pattern = "(.*)(\\d+)(.*)";
// Create a Pattern object
Pattern r = Pattern.compile(pattern);
// Now create matcher object.
Matcher m = r.matcher(line);
while(m.find( )) {
System.out.println("Found value: " + m.group(1));
System.out.println("Found value: " + m.group(2));
System.out.println("Found value: " + m.group(3));
}
}
}
这段代码成功地打印出了:
Found value: This was placed for QT300
Found value: 0
Found value: ! OK?
但是根据正则表达式"(.*)(\\d+)(.*)"
,为什么它不会返回其他可能的结果,例如:
Found value: This was placed for QT30
Found value: 00
Found value: ! OK?
或者
Found value: This was placed for QT
Found value: 3000
Found value: ! OK?
如果这段代码无法完成此操作,则我该如何编写一个可以查找所有可能匹配项的代码?