Ein regulärer Java-Ausdruck zum Auffinden einer Ziffernfolge

Ich habe ein Java-Tutorial für reguläre Ausdrücke online gelernt und war verwirrt über ein kleines Programm.

  // String to be scanned to find the pattern.
  String line = "This order was places for QT3000! OK?";
  String pattern = "(.*)(\\d+)(.*)";

  // Create a Pattern object
  Pattern r = Pattern.compile(pattern);

  // Now create matcher object.
  Matcher m = r.matcher(line);
  if (m.find( )) {
     System.out.println("Found value: " + m.group(0) );
     System.out.println("Found value: " + m.group(1) );
     System.out.println("Found value: " + m.group(2) );
  } 

Und die ausgedruckten Ergebnisse sind:

Found value: This order was places for QT3000! OK?

Found value: This order was places for QT300

Found value: 0

Ich habe keine Ahnung, warum die Gruppe (1) den obigen Wert erhält? Warum stoppt es vor der letzten Null von 'QT3000'?

Vielen Dank!

Antworten auf die Frage(2)

Ihre Antwort auf die Frage