【Java】正規表現について(PatternやMatcherの使い方)

Java

はじめに

今回は、javaの正規表現で文字列の検索や置換をする方法について勉強していきたいと思います。

 

正規表現とは

正規表現とは、特定の文字列パターンによって、複数の文字列を表現できる文字列のことです。複数の文章の中から、特定のパターンの文字列を検索したい場合などに使用されます。

 

正規表現の種類

正規表現文字 内容
^ 行の先頭
$ 行の末尾
\A 文字列の先頭
\z 文字列の最後
. 任意の1文字
* 0回以上の文字の並び
+ 1回以上の文字の並び
? 0または1回の文字の並び
{n} n回の文字の並び
{n,}  n回以上の文字の並び
{n,m} n回以上m回以下の文字の並び
[abc] abcのどれか
[^abc] abcのどれでもない
[a-zA-Z]  
[0-9] 0~9のいずれか
\d 数字
\D 数字以外
\s 空白文字
\S 空白文字以外

 

PatternとMatcherの使い方

javaで正規表現を使用する際は、まず「Pattern」の「compile」メソッドを使用し対象の正規表現の文字列を定義します。定義した文字列で正規表現で検索や置換をしたい場合は「Matcher」クラスを使用します。

 

正規表現に一致するか調べる

文字列が正規表現に一致するものがあるか調べたい場合は、「matches」メソッドを使用します。

    /**
     * @param args
     * @throws Exception
     */
    public static void main(String[] args) throws Exception {
        String message = "Hello World";
        
        Pattern pattern = Pattern.compile(".*Wo.*");
        Matcher matcher = pattern.matcher(message);

        boolean result = matcher.matches();

        System.out.println(result);
    }

 

正規表現に一致する値を全て検索する

正規表現に一致する文字列を全て取り出したい場合、「find」メソッドと「group」メソッドを使用します。「find」メソッドは文字列の先頭から正規表現に一致するものがなくなるまでtrueを返却し続けてくれます。
groupメソッドで正規表現で一致した文字列を取得することができます。

    /**
     * @param args
     * @throws Exception
     */
    public static void main(String[] args) throws Exception {
        String message = "2024年の6月9日に作成した・";
        
    // 数字の0~9を取得
        Pattern pattern = Pattern.compile("[0-9]");
        Matcher matcher = pattern.matcher(message);

        while (matcher.find()) {
            System.out.print(matcher.group());
        }
    }

 

正規表現に一致する値を置換する

正規表現に一致した最初の文字列を置換

正規表現に一致した最初の文字列を置換する場合、「replaceFirst」メソッドを使用します。第1引数の値に置換することができます。

    /**
     * @param args
     * @throws Exception
     */
    public static void main(String[] args) throws Exception {
        String message = "He llo Wor ld";
        
    // 空白文字を置換
        Pattern pattern = Pattern.compile("\\s");
        Matcher matcher = pattern.matcher(message);

        System.out.print(matcher.replaceFirst(""));
    }

 

正規表現に一致した全ての文字列を置換

正規表現に一致した全ての文字列を置換する場合、「replaceAll」メソッドを使用します。

    /**
     * @param args
     * @throws Exception
     */
    public static void main(String[] args) throws Exception {
        String message = "He llo Wor ld";
        
    // 空白文字を置換
        Pattern pattern = Pattern.compile("\\s");
        Matcher matcher = pattern.matcher(message);

        System.out.print(matcher.replaceAll(""));
    }

 

ドキュメント

【公式ドキュメント】
Java SE Specifications (oracle.com)

 

最後に

Javaの環境構築は、この記事を参照してみてください。
【開発環境構築】VS CodeでJavaを使用するための環境構築を実施する – SEもりのLog (selifemorizo.com)

以上、ログになります。
これからも継続していきましょう!!

Javaサーバーサイド関連
おすすめIT本
良いコード/悪いコードで学ぶ設計入門

「ITエンジニア本大賞2023」技術書部門で大賞を受賞した本です。
・コードの可読性
・普段意識したほうが良いこと
・リファクタリング考え方
等、普段のコードを設計する際に意識することが書かれています。
コードのあるべき姿に迷ったら一度読んでみると良い本です。

仕組みと使い方がわかる Docker&Kubernetesのきほんのきほん

Dockerって何?となったときに私が最初に読んだ本です。
Dockerがどんな仕組みで動いているのか、コマンドでは何を命令しているのかを理解できるように、イラストを多用して説明しています。

1冊ですべて身につくJavaScript入門講座

「ITエンジニア本大賞2024」技術書部門で大賞を受賞した本です。
私が次に読もうと思っている本なのでおすすめとして挙げておきたいと思います。

コメント

タイトルとURLをコピーしました