0

パターンマッチングを行うJavaプログラムが2つあります。

プログラム - 1

    public class test {

        public static void main(String[] args) {
            Pattern p = Pattern.compile("\\d*");
            Matcher m = p.matcher("ab34ef");
            boolean b = false;
            while (b = m.find()){
                System.out.println(m.start());
                System.out.println(m.group());
            }
        }
    }

出力:

    0
    1
    2
    34
    4
    5
    6

プログラム - 2

public class test {

    public static void main(String[] args) {
        Pattern p = Pattern.compile("Dog");
        Matcher m = p.matcher("This is a Dog and Dog name is Tommy");
        boolean b = false;
        while (b = m.find()){
            System.out.println(m.start());
            System.out.println(m.group());
        }
    }
}

出力-

    10
    Dog
    18
    Dog

誰かがこれらの両方のケースで正規表現がどのように機能するかを説明できますか?

4

2 に答える 2

2

\\d*0 個以上の数字を含む文字列を意味します。

0 の長い(空の) 数値文字列の結果が得られます...

おそらく、少なくとも 1 の長さ\\d+の数字の文字列を見つけようとする必要があります。

推奨読書

于 2013-09-23T14:08:07.410 に答える