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

Javaの正規表現(java.util.regex)でテキストを分割する方法|split()メソッドの使い方

Javaでは、正規表現を利用して文字列を簡単に分割することができます。
Stringクラスのsplit()メソッドは、引数として正規表現を受け取り、入力テキストをトークンに分割して、その結果を文字列配列(String[])として返します。

サンプルコード:Stringクラスのsplit()メソッドを使う

以下の例では、ユーザーから入力されたテキストを、数字(\d)を区切り文字として分割しています。

import java.util.Scanner;
public class Example{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter input text: ");
        String input = sc.nextLine();
        String[] strArray = input.split("\\d");
        for (int i=0; i<strArray.length; i++) {
            System.out.println(strArray[i]);
        }
    }
}

実行結果

Enter input text:
1Ramu 2Raju 3Radha 4Rahman 5Rachel
Ramu
Raju
Radha
Rahman
Rachel

入力文字列内の数字が区切り文字として認識され、「Ramu」「Raju」などの名前ごとに分割されていることがわかります。

java.util.regexパッケージを使った文字列の分割

Stringクラスの代わりに、java.util.regex.Patternクラスのsplit()メソッドを使って文字列を分割することもできます。
このメソッドは文字列を引数として受け取り、コンパイル済みの正規表現パターンに基づいてテキストをトークンに分割し、その結果を文字列配列として返します。

手順

  1. Pattern.compile()メソッドで正規表現からPatternオブジェクトを作成する
  2. Patternオブジェクトのsplit()メソッドに入力文字列を渡して分割する

サンプルコード:Patternクラスのsplit()メソッドを使う

import java.util.Scanner;
import java.util.regex.Pattern;
public class SplittingString{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter input text: ");
        String input = sc.nextLine();
        String regex = "\\d";
        // Patternオブジェクトの作成
        Pattern pattern = Pattern.compile(regex);
        String[] strArray = pattern.split(input);
        for (int i=0; i<strArray.length; i++) {
            System.out.println(strArray[i]);
        }
    }
}

実行結果

Enter input text:
1Ramu 2Raju 3Radha 4Rahman 5Rachel
Ramu
Raju
Radha
Rahman
Rachel

まとめ

  • 単純な文字列分割にはStringクラスのsplit()が手軽です。
  • 同じ正規表現パターンを繰り返し使う場合は、Patternクラスでパターンを事前にコンパイルしておくことで、処理を効率化できます。
  1. Javaの正規表現(RegEx)で空白文字にマッチさせる方法

    Javaの正規表現におけるメタ文字「\s」は、指定された文字列内の空白文字(スペース、タブ、改行など)にマッチします。この記事では、「\s」を使って空白文字を検出・処理する具体的な方法を2つのサンプルコードとともに解説します。例1:文字列中の空白文字の数をカウントする次の例では、ユーザーから入力された文字列に対して正規表現「\s」を適用し、Matcherクラスのfind()メソッドを使って空白文字の出現回数を数えています。import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Patter

  2. JavaのGsonで@SerializedNameアノテーションを使ってJSONプロパティ名を変更する方法

    JavaのオブジェクトをJSONに変換する際、クラスのフィールド名とは異なるプロパティ名で出力したいケースはよくあります。そんなときに役立つのが、Gsonが提供する@SerializedNameアノテーションです。このアノテーションを付与すると、シリアライズ(JSONへの変換)・デシリアライズ(JSONからの復元)の両方において、指定した名前がフィールド名として使用されます。なお、@SerializedNameはGsonインスタンスに設定されたデフォルトの命名ポリシーを含む、あらゆるFieldNamingPolicyを上書きします。命名ポリシー自体を切り替えたい場合は、GsonBuilderク