劣等コンプレックス500%

身動きとれねえ 絵・プログラミング(C/C++/Java/Perl/PHP/Mysql)

【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();
	}
}

・結果。。。
f:id:magicu:20170117125509j:plain