Java OCA OCP Practice Question 279

Question

Given:

import java.util.regex.*;
class Main {/*from w ww .j  a  v a  2 s .  c  o m*/
  public static void main(String[] args) {
    Pattern p = Pattern.compile(args[0]);
    Matcher m = p.matcher(args[1]);
    boolean b = false;
    while(b = m.find()) {
      System.out.print(m.start() + m.group());
    }
  }
}

And the command line:

java Main "\d*" ab34ef

What is the result?

  • A. 234
  • B. 334
  • C. 2334
  • D. 0123456
  • E. 01234456
  • F. 12334567
  • G. Compilation fails


E is correct.

Note

The \d is looking for digits.

The * is a quantifier that looks for 0 to many occurrences of the pattern that precedes it.

Because we specified *, the group() method returns empty strings until consecutive digits are found.

So the only time group() returns a value is when it returns 34, when the matcher finds digits starting in position 2.

The start() method returns the starting position of the previous match because, again, we said find 0 to many occurrences.




PreviousNext

Related