Javaコラム Javaエンジニアのためのお役立ちコラム

正規表現を用いてJavaのsplitメソッドで文字列を分割する方法

2020年06月15日

「正規表現」というものをご存知でしょうか。正規表現は、あらゆる場面で役に立っている文字列の表現手法です。この記事では、正規表現とは何か、具体的にどういうものがあるのかを説明し、最後にJavaのsplitメソッドを用いた正規表現による、文章を分割する簡単なプログラムを紹介していきます。

SE
正規表現とは、どのようなことに利用できるのでしょうか?

PM
データの加工や分析、アプリケーションへの入力チェック等、様々な場面で役立ちます。

正規表現とは?

正規表現とは、文字の集合を記号で用いて表現する方法で、文章内などで文字の組み合わせを照合するために用いられるパターンです。通常の文字の並びに、「メタキャラクタ」と呼ばれる特別な意味を与えられた記号などを埋め込む形でパターンを作成します。システムが出力したログの分析や、膨大なデータから不要なデータを排除するクレンジング、検索システムなどに活用されており、テキストを処理する際に非常に役に立っている技術です。

正規表現の具体例

正規表現がどういうものなのかといったイメージをつけるために、簡単なサンプルとして、「+」という正規表現について紹介します。「+」は直前の文字列が一回以上繰り返される場合にマッチします。例えば、「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”」という文字列を「”,”」で分割するプログラムを書いています。

Javaのsplitメソッドを用いたプログラム実行結果

上記で紹介したJavaのプログラムを実行すると、以下のように一つの文字列であった「”Green,Red,Blue”」が分割され、「”Green”」「”Blue”」「”Red”」となったことがわかります。

このように、Javaのsplitメソッドは、指定した文字列にマッチした部分で分割する役割を持っています。

正規表現を用いたJavaのsplitメソッドによる文字列の分割方法

最後に、正規表現を用いたJavaのsplitメソッドによる文字列の分割方法について紹介していきます。先ほどのJavaのプログラムでは、「”Green,Red,Blue”」という文字列を「”,”」で分割するだけでよく正規表現を使用する必要はなかったのですが、次は応用例として、「”Green:Red,Blue”」を分割するプログラムを書いていきます。

正規表現を用いたJavaのsplitメソッドを用いたプログラム

「”Green:Red,Blue”」は、GreenとRedは「”:”」で区切られていますが、RedとBlueは”,”」で区切られています。そのため、単純に「”,”」で区切るだけではうまく行かないので、「[:,]」という角括弧に含まれる任意の文字列にマッチする正規表現を使用します。

正規表現を用いたJavaのsplitメソッドを用いたプログラム実行結果

上記で紹介した正規表現を用いたJavaのsplitメソッドを用いたプログラムを実行すると、無事「”Green:Red,Blue”」が「”Green”」「”Red”」「”Blue”」に分割されたことがわかります。

このように、正規表現を用いることで、分割対象の文字が異なっていた場合でもしっかり意図した通りの分割を実現することができました。

SE
Javaのsplitメソッドで文字列を分割できるようになると、効率化を目指せそうですね。

PM
そうですね。表記揺れのある文章の解析や、システムが吐き出すログの必要な部分だけを抜き出すなど、上手に利用してみましょう!

Javaのsplitメソッドで文字列を分割しよう

この記事では、正規表現とは何か、どういった種類があるのか、また正規表現によるJavaのsplitメソッドを用いた文字列を分割するプログラムの紹介をしてきました。このように、正規表現をうまく活用できるようになると、表記揺れのある文章の解析や、システムが吐き出すログの必要な部分だけを抜き出すといった操作ができるようになるので、興味のある方は、ぜひ勉強してみてはいかがでしょうか。


Javaでのキャリアアップをお考えの方は、現在募集中の求人情報をご覧ください。

また、直接のエントリーも受け付けております。

エントリー(応募フォーム)

Search

Popular

recommended

Categories

Tags

Jobs