[Java] Pattern.split() メソッドの解説
JavaのPattern.split()メソッドは、正規表現を使って文字列を分割するための強力な機能を提供します。このメソッドは、Pattern
クラスの一部であり、String.split()
メソッドよりも柔軟な操作が可能です。
Pattern.split() メソッドの概要
Pattern.split()
メソッドは、指定した正規表現に一致する箇所で文字列を分割します。このメソッドは、柔軟な分割操作を可能にし、正規表現を活用することで複雑な文字列処理に対応できます。
メソッドの構文
String[] split(CharSequence input);
String[] split(CharSequence input, int limit);
split()
メソッドには以下の2つのバリエーションがあります:
- 第一引数:
input
– 分割対象の文字列。 - 第二引数:
limit
(任意) – 結果の配列の最大要素数を指定します。正の値、ゼロ、負の値で動作が異なります。
基本的な使用例
以下は、Pattern.split()
を使って文字列を単純に分割する例です。
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
String text = "apple,banana,orange";
Pattern pattern = Pattern.compile(",");
String[] result = pattern.split(text);
for (String word : result) {
System.out.println(word);
}
}
}
出力:
apple
banana
orange
高度な正規表現を使った例
正規表現を活用することで、複雑な条件での分割が可能です。
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
String text = "one1two22three333four";
Pattern pattern = Pattern.compile("\\d+"); // 数字で分割
String[] result = pattern.split(text);
for (String word : result) {
System.out.println(word);
}
}
}
出力:
one
two
three
four
limit パラメータの活用例
limit
を指定することで、分割の結果を制御できます。
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
String text = "a:b:c:d:e";
Pattern pattern = Pattern.compile(":");
// limit に 3 を指定
String[] result = pattern.split(text, 3);
for (String part : result) {
System.out.println(part);
}
}
}
出力:
a
b
c:d:e
String.split() との違い
Pattern.split()
とString.split()
は似ていますが、以下の点で異なります:
Pattern.split()
は既にコンパイル済みの正規表現を使用するため、大量の分割操作を行う場合に効率が良い。String.split()
は内部的に毎回正規表現をコンパイルするため、簡易的な用途には適しているが、効率が劣る。
例を通して確認してみましょう。
public class Main {
public static void main(String[] args) {
String text = "cat dog bird";
// String.split()
String[] result1 = text.split(" ");
// Pattern.split()
Pattern pattern = Pattern.compile(" ");
String[] result2 = pattern.split(text);
}
}
どちらも同じ結果を返しますが、Pattern.split()
は効率的な処理が可能です。
まとめ
JavaのPattern.split()
メソッドは、正規表現を活用して柔軟かつ効率的に文字列を分割する強力なツールです。高度な文字列操作が必要な場面で特に役立ちます。正規表現の構築や使い方を理解することで、このメソッドのポテンシャルを最大限に引き出せるでしょう。