MENU

【Java】matchesメソッドと正規表現

https://cdn-ak.f.st-hatena.com/images/fotolife/k/kiserukun/20210611/20210611090227.png

正規表現とは

正規表現とは、文字列が特定のパターンにあることを表現する表記法のことです。 電話、郵便番号、カタカナなど指定した形と一致しているか判定するときなどに使用します。

正規表現

他にもたくさんありますが、今回は一例です。

構文 意味 使用例
^ 行の先頭 [^・・]
$ 行の末尾 [・・$]
¥d 0~9の数字([0-9]と同じ) [¥d]
¥D 数字以外([^0-9]と同じ) [¥D]
{n,m} n回以上m回以下 [¥d{n,m}]
? 0回または1回の繰り返し [¥D?]
¥s 空白文字(スペース、改行文字など) [¥s]

使用例

0~9の数字だけ一致する

public static void main(String args[]) {
    String a = "3879324";
    
    if(a.matches("[0-9]{1,}")){
      System.out.println(a);
    }else{
      System.out.println("一致しません");
    }
  }
>3879324

String a の値に一文字でも数字以外が入っていれば

String a = "3879324v";

>一致しません

文字列の先頭と末尾が一致する

先頭文字が”g”で始まり末尾文字が”v”で終わる場合

  public static void main(String args[]) {
    String a = "g3879324v";
    
    if(a.matches("^g[0-9]{1,}v$")){
      System.out.println(a);
    }else{
      System.out.println("一致しません");
    }
  }
>g3879324v

文字列の先頭に”-”が0回〜1回ある

 public static void main(String args[]) {
  
    String a = "-3";
    String b = "3";
    String c = "--3";

    if(a.matches("^[-]?[0-9]{1,}")){
      System.out.println(a);
    }else{
      System.out.println("一致しません");
    }
    if(b.matches("^[-]?[0-9]{1,}")){
      System.out.println(b);
    }else{
      System.out.println("一致しません");
    }
    if(c.matches("^[-]?[0-9]{1,}")){
      System.out.println(c);
    }else{
      System.out.println("一致しません");
    }
  }
>-3
>3
>一致しません

"-"が2回続くと一致しないことが分かりました。

現在、正規表現は使うたびに検索し、コピペで対応してしています。 使用頻度もそれなりにあるので、いつか自分で書けれるようになりたいと思っています。