【初心者向け】Javaの正規表現についてのまとめ

【初心者向け】Javaの正規表現についてのまとめ

プログラミングをする際、文字列の中で、指定したパターンに合致する部分があるかを調べたい場合に使うのが正規表現です。例えば、電話番号や郵便番号を入力するフォームの場合、数字で、かつ必要な桁数の入力がユーザーによって行われているかどうかを確認するなどの目的で使用されています。

正規表現を理解することで、実践的なプログラミングを行うことができるようになります。
今回は、Java言語の正規表現についてご紹介します。

IT業界まるわかりガイドは、日本初Web専門スクールのインターネット・アカデミーが運営する業界情報メディアです。最新の業界情報を、初心者にも分かりやすくご紹介しています。

目次

正規表現とは

正規表現とは、文字列の規則性を表す手法のことです。例えば「ohfsym」といった意味のない文字の羅列でも、「半角英字である」という点では規則性があります。正規表現とは、こうした文字列の規則性を表すもので、通常は、「ある文字列が、指定の法則に従っているか」を判断するために使われます。正規表現の記号はすべて半角で記述します。

正規表現に使われる記号の例と注意点

今回はわかりやすさを重視して、記号に特化した表記で解説を行います。

「^」(ハット記号)

「^」(ハット記号)は、文字列の先頭を意味しています。

" ^こんにちは "

上記の記述であれば、行頭が「こんにちは」から始まる文字列がこのパターンにマッチします。

「$」(ドル記号)

「^」に似たものとして「$」(ドル記号)があります。これは、文字列の末尾を意味しています。

" さようなら$ "

上記の場合は、末尾が「さようなら」で終わる文字列がこのパターンにマッチします。

注意点

正規表現には、他にも「.」「*」「+」「?」「()」「[]」など特別な意味を持つ記号が存在します。これらが文字列の中に含まれている場合、エラーが起きたり正確な判定を行うことができなくなってしまいます。
それを防ぐためには、記号の前に「\(円記号)」を二つ続けて書くことで、エスケープ(正規表現としての意味合いを打ち消すこと)をすることができます。

"OK?"

これを普通の文字として使いたい場合、
"OK\\?" と書くことで、「?」を普通の文字として扱うことができます。

代表的な正規表現の記号の意味

以下、代表的な正規表現の意味を、例を挙げながら説明していきます。

いずれかの文字列を表す「|」(パイプ)

「|」(パイプ)で区切ることで、複数の文字列のいずれかという意味を表すことができます。 区切る際はスペースを入れないようにしましょう。スペースも一字として認識されてしまいます。

"梅|桃|桜"

上記の場合、「梅」「桃」「桜」のいずれかにマッチします。

グループを表す「()」

「|」で区切った選択肢を「()」でくくることもできます。例えば、
"(梅|桃|桜)が咲いています"
とくくれば、「梅が咲いています」「桃が咲いています」「桜が咲いています」にマッチします。

改行以外の任意の1文字を表す「.」

改行以外のどんな文字でもいいので、文字一つを表します。「...」であれば文字三つです。文字には半角スペースなどの記号も含まれます。

"春は..い"

上記の場合、「春は楽しい」「春は暖かい」はマッチしますが、「春は眠い」の場合マッチしません。

直前の文字が0個以上あることを表す「*」(アスタリスク)

「*」(アスタリスク)は、その直前(左側)にある文字が0個以上あることを表します。「0個」を含むので、その文字が無くてもマッチします。

"ドカー*ン"

上記の場合、「ドカン」でも「ドカーン」でも「ドカーーーン」でもマッチすることになります。
先ほどの「.」と組み合わせて「.*」として使うと、「どんな文字がいくつあってもいい」という意味になります。

たとえば、
".*春一番.*"
であれば、「春一番」という言葉を含む文字列全てがマッチすることになります。

直前の文字が1個以上あることを表す「+」

「*」と似ていますが、直前にある文字が1個以上あることを表します。

"ドカー+ン"

上記の場合、「ドカン」ではマッチしません。「ドカーン」や「ドカーーーン」がマッチします。

直前の文字が1個あるか、またはないこと表す「?」

直前の文字が1個あるか、またはない場合を表します。

"ドカー?ン"

上記の場合、「ドカン」でも「ドカーン」でもマッチしますが、「ドカーーーン」ではマッチしません。

まとめ

ご紹介したもののほかにも、正規表現は存在しますが、ひとまずは正規表現とはどんなものか、大まかなイメージをつかんでみてください。Javaの学習を進める際の参考になれば幸いです。
また、Javaを勉強中という方、これから始めようとお考えの方は、インターネット・アカデミーの「Java講座」で、本格的にJavaを習得してみませんか。プロの講師のポイントを押さえた講義と、わからないところを質問できる環境があれば、独学よりもずっと効率的にJavaを習得することができます。

ぜひ一度、無料体験レッスンやインストラクターにお問い合わせ下さい。

関連講座

大規模WebシステムやAndroidアプリの開発を学ぶJava講座