Javaプログラミング練習問題(正規表現)

java 正規表現(練習問題)

自分の勉強用として練習問題を作成しています。

練習問題

No.01

実行結果の通りになるように出力してください。

  • 正規表現を用いる
  • 完全一致している

  • matchesメソッドを使用する
    • matches()

提供コード

Java
public class Main {
    
    public static void main(String[] args) {

        String s = "ABC";
        System.out.println();
    }
}

実行結果

Java
true

Java
public class Main {
    
    public static void main(String[] args) {

        String s = "ABC";
        System.out.println(s.matches("ABC"));
    }
}

No.02

実行結果の通りになるように出力してください。

  • 正規表現を用いる
  • パターンに.(ピリオド)を使う

提供コード

Java
public class Main {
    
    public static void main(String[] args) {

        String s = "ABC";
        System.out.println();
    }
}

実行結果

Java
true

Java
public class Main {
    
    public static void main(String[] args) {

        String s = "ABC";
        System.out.println(s.matches("A.C"));
    }
}

引数で与えてるパターン中にピリオド記号があった場合、AとCの間には、任意の1文字が入っていれば良いという意味になる。

今回の問題では、AとCの間にピリオドを1つ入れているため、変数sにAZCAあCが代入されていたとしても結果はtrueになる。

No.03

実行結果の通りになるように出力してください。

  • 正規表現を用いる
  • パターンに.(ピリオド)を使う
  • パターンで使用できる文字は、AとEのみです

提供コード

Java
public class Main {
    
    public static void main(String[] args) {

        String s = "ABCDE";
        System.out.println();
    }
}

実行結果

Java
true

Java
public class Main {
    
    public static void main(String[] args) {

        String s = "ABCDE";
        System.out.println(s.matches("A...E"));
        
        // 出力しないのであれば下記でもtrueになる
        "ABCDE".matches("A...E");
    }
}

No.04

実行結果の通りになるように出力してください。

  • 正規表現を用いる
  • パターンにアスタリスクを使用する

提供コード

Java
public class Main {
    
    public static void main(String[] args) {

        String s = "ABBBBB";
        System.out.println();
    }
}

実行結果

Java
true

Java
public class Main {
    
    public static void main(String[] args) {

        String s = "ABBBBB";
        System.out.println(s.matches("AB*"));
        
        // 出力しないのであれば下記でもtrueになる
        "ABBBBB".matches("AB*");
    }
}

アスタリスクは、直前の文字を0回以上繰り返すという意味がある。変数sの中にABからはじまるが、どれくらいBが続くかわからないパターンの時にこれが使える。

No.05

実行結果の通りになるように出力してください。

  • 正規表現を用いる
  • パターンに波カッコを使用する
  • 直前の文字をn回の繰り返し

提供コード

Java
public class Main {
    
    public static void main(String[] args) {

        String s = "APPLE";
        System.out.println();
    }
}

実行結果

Java
true

Java
public class Main {
    
    public static void main(String[] args) {

        String s = "APPLE";
        System.out.println(s.matches("AP{2}LE"));
    }
}

波カッコの中に数字書かれている場合、直前の文字を指定回数分繰り返すという意味になる。

{n} ‥ 直前の文字のn回繰り返し

No.6

実行結果の通りになるように出力してください。

  • 正規表現を用いる
  • パターンに波カッコを使用する
  • 直前の文字をn回以上の繰り返しで表現

提供コード

Java
public class Main_3 {
    
    public static void main(String[] args) {

        String s = "100000035";
        System.out.println();
    }
}

実行結果

Java
true

Java
public class Main {
    
    public static void main(String[] args) {

        String s = "100000035";
        System.out.println(s.matches("10{1,}35"));
        
        //{1,} ~ {6,}の範囲であれば正解です
    }
}

No.7

実行結果の通りになるように出力してください。

  • 正規表現を用いる
  • パターンに波カッコを使用する
  • 直前の文字をn回以上、m回以下の繰り返しで表現

提供コード

Java
public class Main {
    
    public static void main(String[] args) {

        String s = "100000035";
        System.out.println();
    }
}

実行結果

Java
public class Main {
    
    public static void main(String[] args) {

        String s = "100000035";
        System.out.println(s.matches("10{1,6}35"));
    }
}

No.8

実行結果の通りになるように出力してください。

  • 正規表現を用いる
  • パターンに角カッコを使用する
  • 角カッコ内のどれか1文字が当てはまることを要求

提供コード

Java
public class Main {
    
    public static void main(String[] args) {

        String s = "ABC";
        System.out.println();
    }
}

実行結果

Java
true

Java
public class Main {
    
    public static void main(String[] args) {

        String s = "ABC";
        System.out.println(s.matches("AB[CDE]"));
    }
}

[]の中にある文字で、どれか1文字が当てはまることを要求する

No.9

実行結果の通りになるように出力してください。

  • 正規表現を用いる
  • パターンに角カッコを使用する
  • 指定範囲のいずれかの文字

提供コード

Java
public class Main {
    
    public static void main(String[] args) {

        String s = "ABC";
        System.out.println();
    }
}

実行結果

Java
true

Java
public class Main {
    
    public static void main(String[] args) {

        String s = "ABC";
        System.out.println(s.matches("AB[A-Z]"));
    }
}

角カッコ内で ー(ハイフン)を使用すると、文字列の範囲を指定することができます。ここではA〜Zまでの英字を指定してます。

No.10

実行結果の通りになるように出力してください。

  • 正規表現を用いる
  • 「:」と「;」で文字列を分割

提供コード

Java
public class Main_3 {
    
    public static void main(String[] args) {

        String s = "abc,def:ghi";
    }
}

実行結果

Java
abc>def>ghi>

Java
public class Main {
    
    public static void main(String[] args) {

        String s = "abc,def:ghi";
        String[] words = s.split("[,:]");
        
        for (String w : words) {
            System.out.print(w + ">");
        }

    }
}

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です