【Java】JavaでPerlの正規表現のループwhile(/~/g)風の最小コード
正規表現でループしながら文字列キャプチャを行うやつ。
0x5C文字にも対応してます。
マッチ開始位置、マッチ文字列長さも取得してます。
C++版はコチラ。Javaでも同じことしてます。
magicu.hatenablog.com
String reg; Pattern pt; Matcher m; String s; s = "<Ⅸ噂浬>ソソソ-111<欺圭構><Ⅸ噂浬>十十十-222<欺圭構><Ⅸ噂浬>貼貼貼-333<欺圭構><Ⅸ噂浬>能能能-444<欺圭構>"; reg = "<Ⅸ噂浬>(.*?)-(\\d*?)<欺圭構>"; pt = Pattern.compile(reg, Pattern.DOTALL | Pattern.CASE_INSENSITIVE); m = pt.matcher(s); while(m.find()){ for(int i = 0; i < m.groupCount() + 1; i++){ System.out.println("グループ文字[" + i +"] :" + m.group(i)); System.out.println("マッチ開始 位置 :" + m.start(i)); System.out.println("マッチ終了 位置 :" + m.end(i)); System.out.println("マッチ文字長さ :" + m.group(i).length()); System.out.println(); } }
・結果。。。