【Java】Patternクラスのsplit()メソッドの使い方を実行例つきで解説
Pattern.split()メソッドとは
java.util.regexパッケージのPatternクラスは、正規表現をコンパイルした結果を保持するクラスです。コンパイル済みの正規表現オブジェクトは再利用できるため、同じパターンで繰り返しマッチングを行う場合に効率的です。
このクラスが提供するsplit()メソッドは、入力文字列を表すCharSequenceオブジェクトを引数として受け取ります。そして、正規表現パターンに一致する箇所ごとに入力文字列を分割し、分割されたすべてのトークン(部分文字列)を格納したString型の配列を返します。
基本的な使用例
次の例では、「空白+数字+空白」というパターンに一致する箇所で文字列を分割しています。
import java.util.regex.Pattern;
public class SplitMethodExample {
public static void main(String args[]) {
// 数字を検出するための正規表現
String regex = "(\\s)(\\d)(\\s)";
String input = " 1 Name:Radha, age:25 2 Name:Ramu, age:32 3 Name:Rajev, age:45";
// 正規表現をコンパイルしてPatternオブジェクトを生成
Pattern pattern = Pattern.compile(regex);
// マッチが存在するかどうかを確認
if (pattern.matcher(input).find())
System.out.println("指定された文字列には数字が含まれています");
else
System.out.println("指定された文字列には数字が含まれていません");
// 文字列を分割
String strArray[] = pattern.split(input);
for (int i = 0; i < strArray.length; i++) {
System.out.println(strArray[i]);
}
}
}
実行結果
指定された文字列には数字が含まれています Name:Radha, age:25 Name:Ramu, age:32 Name:Rajev, age:45
limit引数を使用した例
split()メソッドには、パターンを適用する回数(limit)を指定できるオーバーロード版も用意されています。第2引数に整数値を渡すことで、結果として得られる配列の長さを制御できます。
次の例では、limitとして「4」を指定しています。この場合、パターンの適用は最大3回までに制限され、それ以降の残りの文字列は最後の要素にそのまま格納されます。
import java.util.regex.Pattern;
public class SplitMethodExample {
public static void main(String args[]) {
// 数字を検出するための正規表現
String regex = "(\\s)(\\d)(\\s)";
String input = " 1 Name:Radha, age:25 2 Name:Ramu, age:32"
+ " 3 Name:Rajeev, age:45 4 Name:Raghu, age:35"
+ " 5 Name:Rahman, age:30";
// 正規表現をコンパイルしてPatternオブジェクトを生成
Pattern pattern = Pattern.compile(regex);
// マッチが存在するかどうかを確認
if (pattern.matcher(input).find())
System.out.println("指定された文字列には数字が含まれています");
else
System.out.println("指定された文字列には数字が含まれていません");
// 文字列を分割(limit = 4)
String strArray[] = pattern.split(input, 4);
for (int i = 0; i < strArray.length; i++) {
System.out.println(strArray[i]);
}
}
}
実行結果
指定された文字列には数字が含まれています Name:Radha, age:25 Name:Ramu, age:32 Name:Rajeev, age:45 4 Name:Raghu, age:35 5 Name:Rahman, age:30
limit値による挙動の違い
limit引数に指定する値によって、split()メソッドの動作は次のように変化します。
- limit > 0: パターンは最大「limit − 1」回まで適用され、配列の長さはlimit以下になります。
- limit = 0: パターンは可能な限り何度でも適用されますが、末尾の空文字列は結果から除外されます。
- limit < 0: パターンは可能な限り何度でも適用され、末尾の空文字列も結果に含まれます。
このように、split()メソッドを使えば正規表現ベースの柔軟な文字列分割が簡単に実装できます。単純な区切り文字での分割にはStringクラスのsplit()でも十分ですが、より複雑なパターンで分割したい場合はPatternクラスのsplit()が有効です。
-
JavaのPattern.matcher()メソッドの使い方を実例で解説
Javaのjava.util.regexパッケージには、文字シーケンスの中から特定のパターンを検索するためのさまざまなクラスが用意されています。 このパッケージに含まれるPatternクラスは、正規表現をコンパイルした結果を表すクラスです。このクラスが提供するmatcher()メソッドは、入力文字列を表すCharSequenceオブジェクトを引数として受け取り、現在のPatternオブジェクトが表す正規表現と入力文字列を照合するためのMatcherオブジェクトを返します。 matcher()メソッドの基本的な流れ matcher()メソッドを使った正規表現マッチングは、一般的に以下の手順で行い
-
【Java】Pattern.compile()メソッドの使い方を具体例でわかりやすく解説
java.util.regex パッケージに含まれる Pattern クラスは、正規表現をコンパイルした結果を表すクラスです。このクラスが持つ compile() メソッドは、正規表現を表す文字列を受け取り、その正規表現をコンパイルした Pattern オブジェクトを返します。 基本的な構文 compile() メソッドの最もシンプルな形式は、引数として正規表現の文字列を1つ受け取ります。 Pattern pattern = Pattern.compile(regex); コンパイル済みの Pattern オブジェクトから matcher() メソッドを呼び出すことで Matcher オブジェ