Java
 Computer >> コンピューター >  >> プログラミング >> Java

【Java正規表現】文字クラス \p{javaMirrored} でミラーリング文字(鏡像文字)にマッチさせる方法


文字クラス \p{javaMirrored} は、java.lang.Character クラスの isMirrored() メソッドに引数として渡したときに true を返す文字、いわゆる「ミラーリング文字(鏡像文字)」にマッチします。

ミラーリング文字とは、右から左へ記述する言語(アラビア語やヘブライ語など)との混在テキストを表示する際に、字形が左右反転されて描画される文字のことです。代表的な例としては、丸括弧 ( )、角括弧 [ ]、波括弧 { }、山括弧 < > といった対称的な記号が挙げられます。

例1:文字列内のミラーリング文字を数える

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexExample {
   public static void main(String args[]) {
      // ユーザーから文字列を入力してもらう
      System.out.println("文字列を入力してください");
      Scanner sc = new Scanner(System.in);
      String input = sc.nextLine();
      // 正規表現の定義
      String regex = "[\\p{javaMirrored}]";
      // 正規表現をコンパイルしてPatternオブジェクトを生成
      Pattern pattern = Pattern.compile(regex);
      // Matcherオブジェクトを取得
      Matcher matcher = pattern.matcher(input);
      int count = 0;
      while(matcher.find()) {
         count++;
      }
      System.out.println("ミラーリング文字の数: " + count);
   }
}

実行結果

文字列を入力してください
<hello< (how are you) {welcome}
ミラーリング文字の数: 6

例2:ミラーリング文字のみで構成された文字列を抽出する

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Example {
   public static void main(String args[]) {
      // ミラーリング文字のみで構成された文字列にマッチする正規表現
      String regex = "^\\p{javaMirrored}+$";
      // 入力データの取得
      Scanner sc = new Scanner(System.in);
      System.out.println("5つの文字列を入力してください:");
      String input[] = new String[5];
      for (int i=0; i<5; i++) {
         input[i] = sc.nextLine();
      }
      // Patternオブジェクトの生成
      Pattern p = Pattern.compile(regex);
      System.out.println("ミラーリング文字を含む文字列:");
      for(int i=0; i<5;i++) {
         // Matcherオブジェクトの生成
         Matcher m = p.matcher(input[i]);
         if(m.matches()) {
            System.out.println(m.group());
         }
      }
   }
}

実行結果

5つの文字列を入力してください:
{Raju}
<RAMU>
rahman
radha
{}<>()[]
ミラーリング文字を含む文字列:
{}<>()[]

このように \p{javaMirrored} を使えば、括弧類など左右反転する性質を持つ文字だけを簡単に検出できます。\p{javaIsDigit}\p{javaUpperCase} など、java.lang.Character の各メソッドに対応した他の文字クラスと組み合わせることで、柔軟な入力チェックや文字列の検証が実現できます。

  1. JavaのCharMatcherクラスとは?主要メソッドと使い方を徹底解説

    CharMatcherクラスは、Predicateが任意のObjectに対して真偽値を判定するのと同じように、任意のJavaのchar値に対してtrueまたはfalseを判定するクラスです。Google Guavaライブラリに含まれており、文字単位のマッチングやフィルタリング処理をシンプルかつ直感的に記述できる強力なユーティリティとして知られています。 CharMatcherの主なメソッド 番号メソッドと説明 1CharMatcher and(CharMatcher other)このマッチャーとotherの両方に一致するすべての文字にマッチする、新しいマッチャーを返します。 2sta

  2. JavaのCharacterクラスとは?主要メソッドと使い方を実例付きで解説

    JavaのCharacterクラスは、プリミティブ型 char の値をオブジェクトとしてラップ(包み込む)ためのラッパークラスです。Characterクラスのオブジェクトは、char 型の値を1つだけ格納する単一のフィールドを持っています。 コレクションやジェネリクスなど、オブジェクトしか扱えない場面で char の値を使いたい場合に、このクラスが役立ちます。また、文字が英字か数字かを判定するユーティリティメソッドも数多く提供されています。 Characterクラスの主なメソッド 以下に、Characterクラスでよく使われるメソッドを紹介します。 修飾子と型メソッドと説明 stati