広告

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

PatternSyntaxException (Java SE 22 & JDK 22) の使い方まとめです。
ほとんどのメソッドにサンプルコードがあります。
API仕様書のおともにどうぞ。


概要

正規表現パターンの構文エラーを示すためにスローされる、非チェック例外です。

クラス構成

PatternSyntaxException は、正規表現に構文エラーがあるときに発生する非チェック例外です。

// OK
final var pattern = Pattern.compile("[a-z]");
final var predicate = pattern.asPredicate();

System.out.println(predicate.test("abc")); // true
System.out.println(predicate.test("123")); // false

// NG
try {
    var _ = Pattern.compile("[a-z");
} catch (PatternSyntaxException e) {
    System.out.println("PatternSyntaxException! : " + e.getMessage());
}

// 結果
// ↓
//PatternSyntaxException! : Unclosed character class near index 3
//[a-z
//   ^

コンストラクタ

PatternSyntaxException (String desc, String regex, int index)

このクラスの新しいインスタンスを構築します。

final var e = new PatternSyntaxException("abc", "xyz", 10);
System.out.println(e);

// 結果
// ↓
//java.util.regex.PatternSyntaxException: abc near index 10
//xyz

System.out.println(e.getDescription()); // abc
System.out.println(e.getPattern()); // xyz
System.out.println(e.getIndex()); // 10

メソッド

String getDescription ()

エラーの説明を取り出します。

final var e = new PatternSyntaxException("abc", "xyz", 10);
System.out.println(e);

// 結果
// ↓
//java.util.regex.PatternSyntaxException: abc near index 10
//xyz

System.out.println(e.getDescription()); // abc
System.out.println(e.getPattern()); // xyz
System.out.println(e.getIndex()); // 10

int getIndex ()

エラー・インデックスを取り出します。

final var e = new PatternSyntaxException("abc", "xyz", 10);
System.out.println(e);

// 結果
// ↓
//java.util.regex.PatternSyntaxException: abc near index 10
//xyz

System.out.println(e.getDescription()); // abc
System.out.println(e.getPattern()); // xyz
System.out.println(e.getIndex()); // 10

String getMessage ()

複数行で構成される文字列を返します。構文エラーの説明とそのインデックス、およびエラーが発生した正規表現パターンのほかに、パターン内のエラー・インデックスを視覚的に表現した文字列も返します。

final var e = new PatternSyntaxException("abc", "xyz", 10);
System.out.println(e.getMessage());

// 結果
// ↓
//abc near index 10
//xyz

String getPattern ()

エラーが発生した正規表現パターンを取り出します。

final var e = new PatternSyntaxException("abc", "xyz", 10);
System.out.println(e);

// 結果
// ↓
//java.util.regex.PatternSyntaxException: abc near index 10
//xyz

System.out.println(e.getDescription()); // abc
System.out.println(e.getPattern()); // xyz
System.out.println(e.getIndex()); // 10

Throwableで宣言されたメソッド

addSuppressed, fillInStackTrace, getCause, getLocalizedMessage, getStackTrace, getSuppressed, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString

Java API 使用例 : Throwable」をご参照ください。


関連記事

ページの先頭へ