3

正規表現に関する scjp テストを解決しようとしています。

ここにコードがあります...

import java.util.regex.*;

public class TestRegex {
    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());
        }
    }
} 

java TestRegex "\d*" ab34ef 

このテストの答えは です01234456。最後の出力(6)以外はすべて理解しました。「ab34ef」の最後のインデックスが 5 であるため、どのようにして 6 を出力できるのでしょうか?

どんな助けでも....

4

1 に答える 1

5

\d*は「0 個以上の数字」を意味し、実際には何にも一致しません。6 は、文字列の最後の文字の後の空の文字列に対する一致です。

于 2013-03-25T16:18:46.843 に答える