正規表現による文字列のスプリット

正規表現を利用した文字列のスプリット方法について説明します。

こうした方法をしらないと、正規表現を知っていれば一瞬でできることも、自前でせっせと面倒な関数を書くことになってしまいます。

正規表現で文字列を分割する意義

「カンマあるいは空白文字で文字列を区切り、文字列の配列にする」にはどうしたらよいでしょうか。

自前で関数を書いてもやれないことはありませんが、やれタブを区切り文字として忘れた、とか、スペースが思った以上に入っていた、とか、 考慮しないといけないことがあって案外面倒だったりします。

こうした場合、正規表現を使えば簡単に実現できます。

Pattern の split() メソッド

compile() メソッドにパターン文字列を渡すと、Pattern オブジェクトが取得できます。

Pattern クラスには split() メソッドがあります。 split() メソッドに分割したい文字列を渡すと、パターンに合致する箇所で文字列を分割して、分割した結果を String の配列として返します。

Pattern オブジェクトの split() メソッドの利用例

Pattern オブジェクトの split() メソッドの利用例をみてみましょう。

分割する文字列は "1, 2, 3 4 , 5" とします。数字がカンマ , で区切られているほか、 まちまちの数の空白文字が挿入されています。

これをうまく分割して、数値の部分だけを取り出します。

package com.keicode.java.test;

import java.util.regex.Pattern;

public class TestApp {
  public static void main(String[] args) {
    Pattern p = Pattern.compile("[,\\s]+");
    String[] result = p.split("1,  2, 3   4 ,  5");
    for (String s : result) {
      System.out.printf("[%s]\n", s);
    }
  }
}

上の例では、パターン文字列として [,\s]+ を指定しています。

これによって、「カンマ (,) または空白文字 (\s) がひとつ以上 (+) で区切る」ということを指定したことになります。

実行結果は次の通りです。

[1]
[2]
[3]
[4]
[5]

確かに区切り文字で区切れていることがわかります。

このように、正規表現のパターンを使って文字列を分割することによって、後処理などをすることなく速やかに求めているデータを取得することができる場合があります。

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

© 2024 Java 入門