正規表現を用いてJavaのsplitメソッドで文字列を分割する方法
「正規表現」というものをご存知でしょうか。正規表現は、あらゆる場面で役に立っている文字列の表現手法です。この記事では、正規表現とは何か、具体的にどういうものがあるのかを説明し、最後にJavaのsplitメソッドを用いた正規表現による、文章を分割する簡単なプログラムを紹介していきます。
- システム
エンジニア - 正規表現とは、どのようなことに利用できるのでしょうか?
- プロジェクト
マネージャー - データの加工や分析、アプリケーションへの入力チェック等、様々な場面で役立ちます。
正規表現とは?
正規表現とは、文字の集合を記号で用いて表現する方法で、文章内などで文字の組み合わせを照合するために用いられるパターンです。通常の文字の並びに、「メタキャラクタ」と呼ばれる特別な意味を与えられた記号などを埋め込む形でパターンを作成します。システムが出力したログの分析や、膨大なデータから不要なデータを排除するクレンジング、検索システムなどに活用されており、テキストを処理する際に非常に役に立っている技術です。
正規表現の具体例
正規表現がどういうものなのかといったイメージをつけるために、簡単なサンプルとして、「+」という正規表現について紹介します。「+」は直前の文字列が一回以上繰り返される場合にマッチします。例えば、「Gre+n」という正規表現があった場合、それは「Green」や「Greeeen」等「+」の直前にある「e」が一回以上繰り返される文字列を表現します。このように、正規表現は文字列のパターンを表現します。
正規表現の基本的な種類について
正規表現 | マッチ例 | 説明 |
---|---|---|
Gre.n | Green,GreAn,GreAn | 「.」は任意の文字列を表現します。 |
Gre*n | Grn,Gren,Green,Greeeen | 「*」は直前の文字が0回以上繰り返すことを表現します。 |
Gre+n | Gren,Green,Greeeen | 「+」は直前の文字が1回以上繰り返すことを表現します。 |
Gre?n | Grn,Gren | 「?」は直前の文字が0個か1個を表現します。 |
Gre[abc]n | Grean,Grebn,Grecn | 「[abc]」は角括弧に含まれるいずれか1文字を表現します。 |
Gre(en|ap) | Green,Greap | 「|」はいずれかの条件として使われます。 |
Gre{2}n | Green | 「{2}」は直前の文字列が2回出現することを表現します。 |
よく使われる基本的な正規表現の例を上記の表にまとめました。正規表現には上記で紹介した以上に種類があるため、より多くを知りたい場合は調べてみることをお勧めします。
正規表現の具体的な身近な使用例
正規表現が実際に使われている例として、メールアドレスの形式チェックやパスワードの形式チェックがあります。アプリケーションに新規会員登録する際に、正しいメールアドレスなのか、条件を満たしたパスワードなのかを判断する際にも正規表現が使われています。メールアドレスの形式をチェックする正規表現の例をあげると「[\w\d_-]+@[\w\d_-]+\.[\w\d._-]+」です。
Javaのsplitメソッドとは?
上記で正規表現について紹介してきましたが、実際にそれを利用したプログラムを紹介します。Javaで正規表現を用いた文章の解析を行うプログラムを書く際に「split」というメソッドをよく使うため、まずsplitから紹介していきます。splitメソッドは、指定された文字列にマッチする部分があれば、その位置で文章を分割し、配列として格納します。
Javaのsplitメソッドを用いたプログラム
以下のコードはJavaを用いて「”Green,Red,Blue”」という文字列を「”,”」で分割するプログラムを書いています。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
public static void main(String[] args) {
//「str1」という変数に"Green,Red,Blue"という文字列を格納。
String str1 = "Green,Red,Blue";
//"str:"という文字列と「str1」に格納された文字列を表示。
System.out.println("str1:" + str1);
//「str2」という変数に","という文字列を格納。
String str2 = ",";
//分割後の値を「colors」という変数に格納。
String[] colors = str1.split(str2);
//「colors」に格納されている内容を表示。
for (String color : colors) {
System.out.println("color:" + color);
}
}
|
Javaのsplitメソッドを用いたプログラム実行結果
上記で紹介したJavaのプログラムを実行すると、以下のように一つの文字列であった「”Green,Red,Blue”」が分割され、「”Green”」「”Blue”」「”Red”」となったことがわかります。
1
2
3
4
|
str1:Green,Red,Blue
color:Green
color:Red
color:Blue
|
このように、Javaのsplitメソッドは、指定した文字列にマッチした部分で分割する役割を持っています。
正規表現を用いたJavaのsplitメソッドによる文字列の分割方法
最後に、正規表現を用いたJavaのsplitメソッドによる文字列の分割方法について紹介していきます。先ほどのJavaのプログラムでは、「”Green,Red,Blue”」という文字列を「”,”」で分割するだけでよく正規表現を使用する必要はなかったのですが、次は応用例として、「”Green:Red,Blue”」を分割するプログラムを書いていきます。
正規表現を用いたJavaのsplitメソッドを用いたプログラム
「”Green:Red,Blue”」は、GreenとRedは「”:”」で区切られていますが、RedとBlueは”,”」で区切られています。そのため、単純に「”,”」で区切るだけではうまく行かないので、「[:,]」という角括弧に含まれる任意の文字列にマッチする正規表現を使用します。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
public static void main(String[] args) {
//「str1」という変数に"Green:Red,Blue"という文字列を格納。
String str1 = "Green:Red,Blue";
// "str:"という文字列と「str1」に格納された文字列を表示。
System.out.println("str1:" + str1);
// 「str2」という変数に"[:,]"という文字列を格納。
String str2 = "[:,]";
// 分割後の値を「colors」という変数に格納。
String[] colors = str1.split(str2);
// 「colors」に格納されている内容を表示。
for (String color : colors) {
System.out.println("color:" + color);
}
}
|
正規表現を用いたJavaのsplitメソッドを用いたプログラム実行結果
上記で紹介した正規表現を用いたJavaのsplitメソッドを用いたプログラムを実行すると、無事「”Green:Red,Blue”」が「”Green”」「”Red”」「”Blue”」に分割されたことがわかります。
1
2
3
4
|
str1:Green:Red,Blue
color:Green
color:Red
color:Blue
|
このように、正規表現を用いることで、分割対象の文字が異なっていた場合でもしっかり意図した通りの分割を実現することができました。
- システム
エンジニア - Javaのsplitメソッドで文字列を分割できるようになると、効率化を目指せそうですね。
- プロジェクト
マネージャー - そうですね。表記揺れのある文章の解析や、システムが吐き出すログの必要な部分だけを抜き出すなど、上手に利用してみましょう!
Javaのsplitメソッドで文字列を分割しよう
この記事では、正規表現とは何か、どういった種類があるのか、また正規表現によるJavaのsplitメソッドを用いた文字列を分割するプログラムの紹介をしてきました。このように、正規表現をうまく活用できるようになると、表記揺れのある文章の解析や、システムが吐き出すログの必要な部分だけを抜き出すといった操作ができるようになるので、興味のある方は、ぜひ勉強してみてはいかがでしょうか。
FEnetJava・Javaコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。

-
スマホアプリから業務系システムまで
スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。
-
充実した研修制度
毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。
-
資格取得を応援
スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。
-
東証プライム上場企業グループ
オープンアップシステムは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。


Java新着案件New Job
-
官公庁向け業務システム開発/Java/東京都千代田区/【WEB面談可】/テレワーク
月給39万~44万円東京都千代田区(永田町駅) -
販売管理システム開発/Java/東京都中央区/【WEB面談可】/テレワーク
月給49万~55万円東京都中央区(京橋駅) -
生命保険会社向けシステム開発/Java/東京都千代田区/【WEB面談可】/テレワーク
月給42万~48万円東京都千代田区(大手町駅) -
社会保険システムのパッケージ開発/Java/東京都港区/【WEB面談可】/テレワーク
月給42万~48万円東京都港区(新橋駅) -
金融機関向けシステム更改/Java/東京都江東区/【WEB面談可】/テレワーク
月給46万~51万円東京都江東区(豊洲駅) -
大手通信会社者向けWebシステム改修/Java/東京都港区/【WEB面談可】/テレワーク
月給42万~48万円東京都港区(品川駅)