広告

Java : MatchResult (正規表現) - API使用例

MatchResult (Java SE 18 & JDK 18) の使用例まとめです。
だいたいのメソッドを網羅済みです。
API仕様のおともにどうぞ。


概要

マッチ操作の結果。

クラス構成

MatchResultインタフェースは、Matcher による正規表現のマッチ操作の結果を表します。

final var pattern = Pattern.compile("a+bc");
final var matcher = pattern.matcher("abc 012 aaaabc 345");

final var stream = matcher.results();

stream.forEach(matchResult -> {

    System.out.println("------");
    System.out.println("start : " + matchResult.start());
    System.out.println("end : " + matchResult.end());
    System.out.println("group : " + matchResult.group());
});

// 結果
// ↓
//------
//start : 0
//end : 3
//group : abc
//------
//start : 8
//end : 14
//group : aaaabc

関連記事:正規表現の基本


メソッド

int end ()

最後にマッチした文字の後のオフセットを返します。

final var pattern = Pattern.compile("a+bc");
final var matcher = pattern.matcher("abc 012 aaaabc");

// 前方一致
System.out.println(matcher.lookingAt()); // true

final var matchResult = matcher.toMatchResult();

System.out.println(matchResult.start()); // 0
System.out.println(matchResult.end()); // 3
System.out.println(matchResult.group()); // "abc"
final var pattern = Pattern.compile("a+bc");
final var matcher = pattern.matcher("abc 012 aaaabc 345");

// 部分一致のすべての結果
final var stream = matcher.results();

stream.forEach(matchResult -> {

    System.out.println("------");
    System.out.println("start : " + matchResult.start());
    System.out.println("end : " + matchResult.end());
    System.out.println("group : " + matchResult.group());
});

// 結果
// ↓
//------
//start : 0
//end : 3
//group : abc
//------
//start : 8
//end : 14
//group : aaaabc

int end (int group)

このマッチ操作中に指定されたグループによって前方参照された部分シーケンスの、最終文字の後のオフセットを返します。

final var pattern = Pattern.compile("(abc|efg)_012_(x..)");
final var matcher = pattern.matcher("abc_012_xyz");

// 完全一致
System.out.println(matcher.matches()); // true

final var matchResult = matcher.toMatchResult();

System.out.println(matchResult.start()); // 0
System.out.println(matchResult.end()); // 11
System.out.println(matchResult.group()); // "abc_012_xyz"

final var groupCount = matchResult.groupCount();
System.out.println(groupCount); // 2

for (int i = 1; i <= groupCount; i++) {

    System.out.println("------");
    System.out.println("i : " + i);
    System.out.println("start : " + matchResult.start(i));
    System.out.println("end : " + matchResult.end(i));
    System.out.println("group : " + matchResult.group(i));
}

// 結果
// ↓
//------
//i : 1
//start : 0
//end : 3
//group : abc
//------
//i : 2
//start : 8
//end : 11
//group : xyz

String group ()

前回のマッチで一致した入力部分シーケンスを返します。

このメソッドの使用例は、end() にまとめて記載しました。
そちらのAPI使用例をご参照ください。

String group (int group)

前回のマッチ操作で指定されたグループによって前方参照された入力部分シーケンスを返します。

このメソッドの使用例は、end(int group) にまとめて記載しました。
そちらのAPI使用例をご参照ください。

int groupCount ()

このマッチ結果のパターンに指定されている、前方参照を行う正規表現グループの数を返します。

このメソッドの使用例は、end(int group) にまとめて記載しました。
そちらのAPI使用例をご参照ください。

int start ()

マッチの開始インデックスを返します。

このメソッドの使用例は、end() にまとめて記載しました。
そちらのAPI使用例をご参照ください。

int start (int group)

このマッチ操作中に指定されたグループによって前方参照された部分シーケンスの、開始インデックスを返します。

このメソッドの使用例は、end(int group) にまとめて記載しました。
そちらのAPI使用例をご参照ください。


関連記事

ページの先頭へ