苦手意識を克服しよう!Java正規表現の基本を初心者向けに解説!
  • facebookページ
  • twitterページ
  • 2019.08.30

    苦手意識を克服しよう!Java正規表現の基本を初心者向けに解説!

    Java言語に限らずですが、プログラミングを行なっていると必ず遭遇することになるのが正規表現です。

    しかし、正規表現はパターンの数も多く、使うケースも限られることからどうしても苦手意識を抱えている方が多いのも事実です。

    本記事では、正規表現を利用する初心者の方向けに、主にJavaで利用する際の基本的な使い方についてご紹介していきたいと思います。

    本記事の内容で、正規表現をマスター出来るといった内容ではありませんが、苦手意識を取り除くための第一歩になるような基本的な部分について学習していきましょう。

    Java 正規表現とは

    Java正規表現とは、主にJava言語のプログラミング時に用いられる正規表現の記述方法を意味します。

    正規表現とは、「ある特定の文字列パターンを1つの形式で表現する方法」のことを指します。

    Javaと他のプログラミング言語で正規表現の書き方は異なるの?

    正規表現の書き方自体は、プログラミング言語によって異なることは基本的にありません。

    正規表現はあくまで文字列のパターンを解析して、指定した文字列と正規表現のパターンが一致しているかを確認するためのものです。

    本記事では、あえてJava正規表現と記載させていただいておりますが、サンプルなどでJavaプログラミングでのソースコードを使用するためであり、正規表現自体は別のプログラミング言語でも同様に使用可能です。

    Java正規表現の基本を確認しよう

    Java正規表現の基本は、文字列比較を行うためのメソッドとして、Stringクラスのmatchesメソッドを利用します。

    matchesメソッドでは、matchesメソッドの引数に正規表現を指定することで、「target(サンプルの例では”あいうえお 123-4567″)」に当たる文字列と一致しているかを確認することが可能となります。

    実際にJava正規表現を利用する際の書き方は?

    Java正規表現で利用するmatchesメソッドでは、正規表現で指定したパターンと一致しているかを判定したのち、返り値として「true」または「false」が返却されます。

    正規表現でチェックした条件の結果で処理を分岐する、下記のような書き方が一般的です。

    ここで注意していただきたいのは、matchesメソッドは対象の文字列(サンプルの例では”あいうえお 123-4567″)と正規表現で指定したパターンが完全一致する場合にのみ「true」を返却するという点に注意しておきましょう。

    そのため下記のようなコードの場合は、比較結果が「false」となり、else側の処理が実施されます。

    ※「”[0-9]{3}-[0-9]{4}”」は、0から9までの数値が3つ + “-” + 0から9までの数値が4つ(ex:123-4567)を表す正規表現です。

    なぜ比較結果が「false」となるかというと、対象の文字列に”あいうえお”という”[0-9]{3}-[0-9]{4}”の正規表現には一致しない文字列が含まれているためです。

    今回のサンプルで、比較結果を「true」としたい場合には下記のように実装する必要があります。

    正規表現の中に「.*」を追加していますが、これが数値の前後に文字列があってもOKといった意味合いの記述方法となるためです。

    Java 正規表現ではPatternクラスとMatcherクラスの使用が一般的

    Javaで正規表現を利用する際の基本は、上述しましたようにStringクラスのmatchesメソッドを利用した書き方ですが、実際に開発を行なっていく際にはPatternクラスとMatcherクラスを利用したコーティングが一般的になっています。

    Patternクラス Matcherクラスを利用した実装方法

    PatternクラスとMacherクラスを利用するためには、java.util.regexをインポートしておく必要があります。

    まずPatternクラスのcompileメソッドの引数に正規表現のパターンを指定します。

    次にPatternクラスのmatcherメソッドの引数に、正規表現と一致するかを確認したい文字列を指定します。

    Matcherオブジェクトのfindメソッドを使用することで、正規表現に一致した文字列かどうかを確認することが出来ます。

    実行した結果は、「true」となります。

    Stringクラスのmatchesメソッドを使用した際には、正規表現パターンと比較文字列が完全一致する必要がありましたが、Matcherオブジェクトのfindメソッドを利用した場合、比較対象の文字列に正規表現に該当するパターンが含まれれば「true」が返却される結果となります。

    まとめ

    本記事では、Java正規表現の基本的な部分に絞ってご紹介してきました。

    今回の説明で利用した「郵便番号チェック」以外にも正規表現には様々な記述方法が存在します。

    Javaの正規表現はご紹介した基本の記述方法さえ理解していれば、正規表現自体を全て覚えておく必要はなく、その都度検索して正規表現部分のみを入れ替えれば実装することが可能です。

    今回ご紹介した、Stringクラスでのmatchesメソッドを使用した正規表現、PatternクラスとMatcherクラスを使用した正規表現の2つをしっかりと理解していただき、ぜひ実務でも迷うことなくJava正規表現を使えるようになりましょう。


    ポテパンが提供するサービスについて

    本メディア「ポテパンスタイル」を運営する株式会社ポテパンは、エンジニアキャリア領域で複数サービスを提供しています。

    ポテパンフリーランス

    ポテパンフリーランス

    フリーランスエンジニアの方に高単価案件をご紹介しております。弊社ではフリーランス案件を常時300件ほど保有しており、その中からあなたに適した案件をご案内いたします。また、これから独立してフリーランスになる方の無料個別相談も承っております。フリーランスになった後の案件獲得方法やお金面(税金や保険など)についてお答えいたします!フリーエンジニアになりたい方向けのコンテンツも盛りだくさんです。

    ポテパンキャリア

    ポテパンキャリア

    エンジニア職専門の転職エージェントです。ポテパンキャリアでは、技術のわかるエージェントがあなたの転職をサポートします。エージェント自身がエンジニアなので、あなたと同じ目線で仕事内容や今後のキャリアについて一緒に考えることができます。年収800万円以上のハイスペック転職をご希望の方は「ポテパンプロフェッショナル」もご用意しておりますのでご利用下さいませ。

    ポテパンキャンプ

    ポテパンキャンプ

    ポテパンキャンプでは、RubyにてゼロからオリジナルのECサイトを作り上げてる3ヶ月間の実践型カリキュラムを提供しております。すでに本スクールの卒業生は、エンジニア職として様々な企業様に就職しております。なお、本スクールは受講料25万円と他社スクールに比べ格安となっており、またポテパンからご紹介させていただいた企業へ就職が決まった場合は、全額キャッシュバックいたします。



    株式会社ポテパンは、企業とエンジニアの最適なマッチングを追求しています。気になるサービスがあれば、ぜひ覗いてみてください!

    ポテクラバナー ポテプロバナー

    この記事をシェア

    • Facebookシェア
    • Twitterシェア
    • Hatenaシェア
    • Lineシェア
    pickup









    ABOUT US

    ポテパンはエンジニアと企業の最適なマッチングを追求する企業です。

    READ MORE