/** * ドメイン非依存URL出力フィルタ * javadrill.tech移行時はwp_options.home/siteurlのみ変更すればよい * * データベースには絶対URL(https://minner.asia)を保持し、 * 表示時に現在のドメイン(home_url())に動的変換する */ function javadrill_make_urls_dynamic($content) { if (empty($content)) { return $content; } // データベース内の絶対URLを現在のhome_url()に置換 $old_url = 'https://minner.asia'; $new_url = untrailingslashit(home_url()); // http版も対応(念のため) $content = str_replace($old_url, $new_url, $content); $content = str_replace('http://minner.asia', $new_url, $content); return $content; } // 投稿本文、ウィジェット、タームの説明、抜粋に適用 add_filter('the_content', 'javadrill_make_urls_dynamic', 20); add_filter('widget_text', 'javadrill_make_urls_dynamic', 20); add_filter('term_description', 'javadrill_make_urls_dynamic', 20); add_filter('get_the_excerpt', 'javadrill_make_urls_dynamic', 20); 013 クラスライブラリ | Javaドリル https://minner.asia 楽々学べるJavaの問題集 Fri, 05 Sep 2025 02:14:21 +0000 ja hourly 1 https://wordpress.org/?v=6.8.3 https://minner.asia/wp-content/uploads/2023/10/cropped-logo-32x32.png 013 クラスライブラリ | Javaドリル https://minner.asia 32 32 013 クラスライブラリ(正規表現のパターンを扱うクラス) 022 解答例 https://minner.asia/archives/2988 https://minner.asia/archives/2988#respond Wed, 29 Nov 2023 23:41:01 +0000 http://localhost/?p=2988
import java.util.Scanner;

public class PasswordValidator {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        // パスワードを入力してもらう
        System.out.println("パスワードを入力してください: ");
        String password = scanner.nextLine();

        // セキュリティポリシーの検証
        if (validatePassword(password)) {
            System.out.println("パスワードがセキュリティポリシーに合致しています。");
        } else {
            System.out.println("パスワードがセキュリティポリシーに合致していません。");
        }
    }

    // パスワードのセキュリティポリシーを検証するメソッド
    private static boolean validatePassword(String password) {
        // 最低8文字以上、大文字・小文字・数字を含むかどうかを検証
        return password.length() >= 8 && containsUpperCase(password) && containsLowerCase(password) && containsDigit(password);
    }

    // 大文字を含むかどうかを検証するメソッド
    private static boolean containsUpperCase(String password) {
        for (char ch : password.toCharArray()) {
            if (Character.isUpperCase(ch)) {
                return true;
            }
        }
        return false;
    }

    // 小文字を含むかどうかを検証するメソッド
    private static boolean containsLowerCase(String password) {
        for (char ch : password.toCharArray()) {
            if (Character.isLowerCase(ch)) {
                return true;
            }
        }
        return false;
    }

    // 数字を含むかどうかを検証するメソッド
    private static boolean containsDigit(String password) {
        for (char ch : password.toCharArray()) {
            if (Character.isDigit(ch)) {
                return true;
            }
        }
        return false;
    }
}

このプログラムでは、validatePassword メソッド内で各条件を検証し、これらの条件をすべて満たしていればセキュリティポリシーに合致していると判断しています。

「013 クラスライブラリ」問題集リスト

🎯 実習で理解を深めよう

この内容についてJavaDrillで実際に手を動かして学習できます

]]>
https://minner.asia/archives/2988/feed 0
013 クラスライブラリ(正規表現のパターンを扱うクラス) 022 問題 https://minner.asia/archives/2986 https://minner.asia/archives/2986#respond Wed, 29 Nov 2023 23:38:46 +0000 http://localhost/?p=2986

問題

パスワードが一定のセキュリティポリシーに合致しているかどうかを検証するプログラムを書いてください(例: 最低8文字以上、大文字・小文字・数字を含むなど)。

ヒント

パスワードが一定のセキュリティポリシーに合致しているかどうかを検証するためのプログラムを作成するには、以下の手順を考慮します。

  1. セキュリティポリシーの定義:
    • セキュリティポリシーを明確に定義します。例えば、最低8文字以上、大文字・小文字・数字を含む、特殊文字を含むなど。
  2. 正規表現の使用:
    • 正規表現を使用して、パスワードがセキュリティポリシーに合致しているかどうかを検証します。正規表現を使うことで、パターンに一致するかどうかを簡単に判定できます。
  3. 条件の検証:
    • 正規表現によるパターンマッチング以外に、他の条件も検証することが重要です。例えば、文字列の長さが8文字以上であること、大文字・小文字・数字がそれぞれ1文字以上含まれていることなど。

→解答例

🎯 実習で理解を深めよう

この内容についてJavaDrillで実際に手を動かして学習できます

]]>
https://minner.asia/archives/2986/feed 0
013 クラスライブラリ(正規表現のパターンを扱うクラス) 021 解答例 https://minner.asia/archives/2980 https://minner.asia/archives/2980#respond Wed, 29 Nov 2023 23:32:18 +0000 http://localhost/?p=2980
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

public class DateValidator {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        // ユーザーからの入力を取得
        System.out.println("日付を入力してください(例: yyyy-MM-dd): ");
        String userInput = scanner.nextLine();

        // 検証する日付フォーマット
        String dateFormatPattern = "yyyy-MM-dd";

        // SimpleDateFormatを作成
        SimpleDateFormat dateFormat = new SimpleDateFormat(dateFormatPattern);
        dateFormat.setLenient(false); // 厳密な検証を行うために設定

        try {
            // パースを試みる
            Date parsedDate = dateFormat.parse(userInput);

            // パース成功時の処理
            System.out.println("入力された日付は有効です。");
        } catch (ParseException e) {
            // パース失敗時の処理
            System.out.println("入力された日付は無効です。指定されたフォーマットに合致していません。");
        }
    }
}

このプログラムでは、ユーザーからの入力が “yyyy-MM-dd” というフォーマットに合致しているかどうかを検証しています。SimpleDateFormat の parse メソッドを使用して、ユーザーからの入力が有効な日付であるかどうかを確認しています。例外が発生する場合は、入力が無効であると見なします。

SimpleDateFormatクラス

SimpleDateFormat クラスは、Javaの日付と時刻のフォーマットや解析を行うためのクラスです。主に文字列と日付オブジェクトの相互変換をサポートします。以下は SimpleDateFormat クラスの主な特徴と使い方についての解説です。

1. フォーマットパターンの定義

SimpleDateFormat クラスでは、特定のフォーマットパターンを使用して日付や時刻の書式を指定します。以下は一般的なフォーマットの一部です:

  • y:年
  • M:月
  • d:日
  • H:時 (24 時間制)
  • h:時 (12 時間制)
  • m:分
  • s:秒
  • S:ミリ秒

例えば、”yyyy-MM-dd HH:mm:ss” は「年-月-æ—¥ 時:分:秒」の形式です。

2. フォーマットとパース

フォーマット(Date → String)

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date currentDate = new Date();
String formattedDate = dateFormat.format(currentDate);
System.out.println(formattedDate);

パース(String → Date)

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
String dateString = "2023-11-26";
try {
    Date parsedDate = dateFormat.parse(dateString);
    System.out.println(parsedDate);
} catch (ParseException e) {
    e.printStackTrace();
}

3. 厳密な検証

setLenient(false) メソッドを使用して、厳密な検証を有効にすることができます。これにより、日付や時刻の範囲外の値に対するエラーが検出されます。

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
dateFormat.setLenient(false);

4. ロケールの設定

Locale クラスを使用してロケールを指定することができます。これにより、日付や月の表記が異なる地域に対応できます。

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日", Locale.JAPAN);

SimpleDateFormat クラスを適切に利用することで、日付と時刻を文字列に変換したり、逆に文字列を日付オブジェクトに変換したりすることが容易になります。

「013 クラスライブラリ」問題集リスト

🎯 実習で理解を深めよう

この内容についてJavaDrillで実際に手を動かして学習できます

]]>
https://minner.asia/archives/2980/feed 0
013 クラスライブラリ(正規表現のパターンを扱うクラス) 021 問題 https://minner.asia/archives/2978 https://minner.asia/archives/2978#respond Wed, 29 Nov 2023 23:23:45 +0000 http://localhost/?p=2978

問題

ユーザーから入力された文字列が特定の日付フォーマットに合致しているかどうかを検証するプログラムを書いてください。

ヒント

  1. 日付フォーマットの確認:
    • ユーザーからの入力が特定の日付フォーマットに合致するかどうかを検証するためには、まず対象となる日付フォーマットを確認します。例えば、”yyyy-MM-dd” など。
  2. SimpleDateFormatクラス:
    • Javaでは、SimpleDateFormat クラスを使用して日付フォーマットの解析とフォーマットができます。このクラスを使って、指定された日付フォーマットに合致しているかどうかを確認します。
  3. try-catchブロックの使用:
    • パース(解析)処理やフォーマット処理は例外をスローする可能性があるため、try-catch ブロックを使用して例外をキャッチします。日付が正しくフォーマットされている場合は、エラーが発生しません。
  4. parseメソッドとformatメソッド:
    • SimpleDateFormat クラスの parse メソッドを使用してユーザーからの入力を日付に変換し、format メソッドを使用して元の形式に変換して検証します。
  5. Patternクラスと正規表現:
    • より柔軟な検証が必要な場合は、Pattern クラスを使用して正規表現で日付フォーマットを定義し、ユーザーからの入力がそれに一致するかどうかを確認します。

これらのヒントを元に、対象となる日付フォーマットを確認し、Javaの日付処理クラスを活用して、ユーザーからの入力がそのフォーマットに合致しているかどうかを検証するプログラムを作成してみてください。

→解答例

「013 クラスライブラリ」問題集リスト

🎯 実習で理解を深めよう

この内容についてJavaDrillで実際に手を動かして学習できます

]]>
https://minner.asia/archives/2978/feed 0
013 クラスライブラリ(正規表現のパターンを扱うクラス) 020 解答例 https://minner.asia/archives/2971 https://minner.asia/archives/2971#respond Tue, 28 Nov 2023 23:42:26 +0000 http://localhost/?p=2971
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class IPv4Validator {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        // ユーザーからの入力を取得
        System.out.println("IPv4アドレスを入力してください: ");
        String userInput = scanner.nextLine();

        // IPv4アドレスの正規表現パターン
        String ipv4Pattern = "^((25[0-5]|2[0-4][0-9]|[0-1]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[0-1]?[0-9][0-9]?)$";

        // 正規表現パターンをコンパイル
        Pattern pattern = Pattern.compile(ipv4Pattern);

        // Matcherを作成
        Matcher matcher = pattern.matcher(userInput);

        // IPv4アドレスの検証結果を表示
        if (matcher.matches()) {
            System.out.println("有効なIPv4アドレスです。");
        } else {
            System.out.println("無効なIPv4アドレスです。");
        }
    }
}

このプログラムでは、^((25[0-5]|2[0-4][0-9]|[0-1]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[0-1]?[0-9][0-9]?)$ という正規表現パターンを使用しています。このパターンはIPv4アドレスの一般的な形式に一致するように構築されています。ユーザーからの入力がこのパターンに一致するかどうかを検証しています。

正規表現でのエスケープ

正規表現では、特定の文字や文字列に対して特別な意味を持つメタ文字があります。これらのメタ文字を文字として扱いたい場合、エスケープを行う必要があります。エスケープは通常、バックスラッシュ \ を使用して行います。

以下は、一般的な正規表現メタ文字とそのエスケープの例です:

  1. ピリオド .:
    • ピリオドは任意の1文字に一致するメタ文字です。例えば、A.B は “A” と “B” の間にどんな1文字でも一致します。ピリオド自体を検索したい場合は、A\.B のようにエスケープします。
  2. バックスラッシュ \:
    • バックスラッシュ自体がメタ文字として使用されます。例えば、\d は任意の数字に一致します。バックスラッシュ自体を検索したい場合は、\\ とエスケープします。
  3. 角括弧 []:
    • 角括弧はキャラクタクラスを定義します。例えば、[aeiou] は母音に一致します。角括弧自体を検索したい場合は、\\[ ã‚„ \\] のようにエスケープします。
  4. ハイフン -(範囲指定の場合):
    • 角括弧内でハイフンを使用すると、範囲を指定できます。例えば、[0-9] は0から9までの数字に一致します。ハイフン自体を検索したい場合は、\\- とエスケープします。

これらの例を通じて、正規表現内でメタ文字をそのまま検索するためにはエスケープが必要であることがわかります。エスケープを忘れると、意図しない結果が生じる可能性があります。

「013 クラスライブラリ」問題集リスト

🎯 実習で理解を深めよう

この内容についてJavaDrillで実際に手を動かして学習できます

]]>
https://minner.asia/archives/2971/feed 0
013 クラスライブラリ(正規表現のパターンを扱うクラス) 020 問題 https://minner.asia/archives/2969 https://minner.asia/archives/2969#respond Tue, 28 Nov 2023 23:38:39 +0000 http://localhost/?p=2969

問題

ユーザーから入力された文字列が有効なIPv4アドレスとして成り立つかどうかを検証するプログラムを書いてください。

ヒント

  1. IPv4アドレスの基本構造:
    • IPv4アドレスは4つの数値(0から255までの範囲)がピリオドで区切られた形式です。例: 192.168.0.1
  2. 正規表現の利用:
    • 正規表現を使用してIPv4アドレスのパターンを定義します。各部分が0から255までの数字で構成されていることを確認するパターンを作成します。
  3. キャラクタクラスの利用:
    • キャラクタクラスを使用して、各部分が0から9の数字であることを確認します。例えば、[0-9]は0から9のどれかに一致します。
  4. 量指定子の利用:
    • 各部分が1桁または2桁の数字であることを確認するために、量指定子を使用します。例えば、[0-9]{1,2}は1桁または2桁の数字に一致します。
  5. ピリオドのエスケープ:
    • ピリオドは正規表現で特別な意味を持つため、正確にピリオドと一致させるためにはエスケープが必要です。エスケープはバックスラッシュ \ を使います。
  6. IPv4アドレスの結合:
    • 上記の要素を組み合わせてIPv4アドレス全体の正規表現パターンを作成します。各部分をピリオドで連結する形にします。

これらのヒントをもとに、JavaでIPv4アドレスの有効性を検証するための正規表現パターンを作成し、Pattern クラスと Matcher クラスを使用してプログラムを実装してみてください。

→解答例

「013 クラスライブラリ」問題集リスト

🎯 実習で理解を深めよう

この内容についてJavaDrillで実際に手を動かして学習できます

]]>
https://minner.asia/archives/2969/feed 0
013 クラスライブラリ(正規表現のパターンを扱うクラス) 019 解答例 https://minner.asia/archives/2965 https://minner.asia/archives/2965#respond Tue, 28 Nov 2023 23:34:07 +0000 http://localhost/?p=2965
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class URLExtractor {
    public static void main(String[] args) {
        // テスト用のテキスト
        String text = "Visit our website at https://www.example.com for more information. You can also check http://example.org.";

        // URLを抽出する正規表現パターン
        String urlRegex = "\\b(?:https?|ftp):\\/\\/[-A-Z0-9+&@#\\/%?=~_|!:,.;]*[-A-Z0-9+&@#\\/%=~_|]";

        // 正規表現パターンをコンパイル
        Pattern pattern = Pattern.compile(urlRegex, Pattern.CASE_INSENSITIVE);
        Matcher matcher = pattern.matcher(text);

        // マッチしたURLを表示
        while (matcher.find()) {
            String url = matcher.group();
            System.out.println("Found URL: " + url);
        }
    }
}

このプログラムでは、指定された正規表現パターンを使用して、与えられたテキスト内のURLを抽出しています。プロトコルがhttpまたはhttps、またはftpから始まるURLを抽出するようになっています。この例は簡単なものであり、正確なURLの形式に応じて正規表現を調整する必要があるかもしれません。

「013 クラスライブラリ」問題集リスト

🎯 実習で理解を深めよう

この内容についてJavaDrillで実際に手を動かして学習できます

]]>
https://minner.asia/archives/2965/feed 0
013 クラスライブラリ(正規表現のパターンを扱うクラス) 019 問題 https://minner.asia/archives/2963 https://minner.asia/archives/2963#respond Tue, 28 Nov 2023 23:31:36 +0000 http://localhost/?p=2963

問題

与えられたテキストからURLを抽出するプログラムを書いてください。

ヒント

  1. 正規表現の使用:
    • URLは一般的に特定のパターンに従います。正規表現を使用してこれらのパターンを特定し、URLを抽出します。
  2. URLの一般的なパターン:
    • URLの一般的な形式は http(s)://www.example.com のようになっています。これにマッチする正規表現を作成します。ただし、URLの形式は多岐にわたるので、用途によって適切な正規表現を選択する必要があります。
  3. 正規表現のテスト:
    • 正規表現をテストするために、いくつかのサンプルテキストを用意しておくと良いです。例えば、HTMLのソースコードからURLを抽出する場合は、HTMLソースの一部を使用してテストすると良いでしょう。
  4. グループ化:
    • URLにはプロトコル、ホスト、パスなどがあります。これらの部分を正確に抽出するために、正規表現内でグループ化を使用すると便利です。例えば、(http://)(www\\.)?(example\\.com) のようにグループを作成します。
  5. Matcherクラスの利用:
    • Pattern クラスで正規表現をコンパイルし、Matcher クラスを使用してテキストと一致させます。find() メソッドを使用して一致を見つけ、group() メソッドでグループを取得します。
  6. 重複を防ぐ:
    • 同じURLが複数回出現する可能性がある場合は、重複を防ぐ仕組みを考慮すると良いです。

これらのヒントを考慮して、特定のテキストからURLを抽出するための正規表現を作成し、Javaの正規表現機能を使用してプログラムを実装してみてください。

→解答例

「013 クラスライブラリ」問題集リスト

🎯 実習で理解を深めよう

この内容についてJavaDrillで実際に手を動かして学習できます

]]>
https://minner.asia/archives/2963/feed 0
013 クラスライブラリ(正規表現のパターンを扱うクラス) 018 解答例 https://minner.asia/archives/2956 https://minner.asia/archives/2956#respond Tue, 28 Nov 2023 23:25:38 +0000 http://localhost/?p=2956
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class EmailValidationExample {
    public static void main(String[] args) {
        // ユーザーからの入力を受け取る
        Scanner scanner = new Scanner(System.in);
        System.out.println("電子メールアドレスを入力してください:");
        String email = scanner.nextLine();
        scanner.close();

        // 電子メールアドレスの正規表現パターン
        String emailRegex = "^[a-zA-Z0-9_+&*-]+(?:\\.[a-zA-Z0-9_+&*-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,7}$";

        // 正規表現パターンをコンパイル
        Pattern pattern = Pattern.compile(emailRegex);

        // 入力された文字列と正規表現を比較
        Matcher matcher = pattern.matcher(email);

        // メッセージを表示
        if (matcher.matches()) {
            System.out.println("有効な電子メールアドレスです。");
        } else {
            System.out.println("無効な電子メールアドレスです。");
        }
    }
}

この例では、標準入力からユーザーからの電子メールアドレスを受け取り、正規表現パターンを使用して有効性を検証しています。ただし、電子メールアドレスの正規表現は非常に複雑であり、全てのケースに対応することは難しいです。プロダクション環境ではライブラリやフレームワークの機能を利用するか、より厳密な正規表現パターンを考慮することが推奨されます。

Patternクラス

java.util.regex.Pattern クラスは、正規表現パターンを表すためのクラスです。正規表現は、文字列のパターンマッチングや検索、置換などの文字列操作を柔軟かつ効果的に行うために使用されます。Pattern クラスは、正規表現をコンパイルし、その後にこのパターンを使用して文字列操作を行います。

以下は、Pattern クラスの主なメソッドとその解説です:

  1. compile(String regex):
    • パターンをコンパイルします。指定された正規表現が無効な場合、PatternSyntaxException がスローされます。
  2. matcher(CharSequence input):
    • 指定された文字列に対するマッチャーオブジェクトを作成します。このマッチャーオブジェクトは、パターンに基づいて文字列上での操作を行います。
  3. split(CharSequence input):
    • 指定された文字列をパターンに基づいて分割し、String[] 配列として返します。
  4. matches():
    • パターンが文字列全体に対して完全に一致するかどうかを判定します。
  5. find():
    • パターンが文字列内で部分的に一致するかどうかを判定します。見つかった場合、次に進みます。
  6. group():
    • 最後に成功したマッチング操作において、指定されたグループの部分文字列を取得します。
  7. pattern():
    • コンパイルされた正規表現パターンを取得します。
  8. flags():
    • パターンのフラグ(例: 大文字・小文字を区別するかどうか)を取得します。

Pattern クラスを使用する際には、まず compile() メソッドで正規表現パターンをコンパイルし、その後、matcher() メソッドで対象となる文字列に対するマッチャーオブジェクトを取得して操作を行います。正規表現には特定の構文があり、慣れるまで少し学習が必要です。

Matcherクラス

Matcher クラスは、正規表現に基づいて文字列に対してパターンマッチングを行うためのクラスです。Matcher クラスは Pattern クラスの matcher() メソッドによって得られ、検索や置換などの操作を行います。

以下は、Matcher クラスの主なメソッドとその解説です:

  1. matches():
    • パターンが文字列全体に対して完全に一致するかどうかを判定します。一致する場合は true、そうでない場合は false を返します。
  2. find():
    • パターンが文字列内で部分的に一致するかどうかを判定します。一致する場合は true を返し、次に進みます。次の一致がない場合は false を返します。
  3. start():
    • 最後に成功した一致操作の開始位置(インデックス)を返します。
  4. end():
    • 最後に成功した一致操作の終了位置(インデックス + 1)を返します。
  5. group():
    • 最後に成功した一致操作において、指定されたグループの部分文字列を取得します。グループは正規表現内の括弧で指定された部分です。
  6. groupCount():
    • 正規表現内のグループの数を返します。

Matcher クラスを使用する基本的な流れは次のとおりです:

  1. Pattern クラスの compile() メソッドを使用して正規表現パターンをコンパイルし、matcher() メソッドを呼び出して Matcher オブジェクトを得ます。
  2. Matcher オブジェクトのメソッド(matches()、find()、start()、end()、group() など)を使用してパターンマッチングを実行します。
  3. 必要に応じて、パターンが複数回一致する場合や、グループを利用する場合は、ループや条件分岐を使用して適切な処理を行います。

Matcher クラスは柔軟で強力な文字列操作を提供しますが、正規表現の理解と使い方が必要です。

正規表現

正規表現(Regular ExpressionsまたはRegex)は、文字列のパターンを定義するための特殊な文字列です。主に文字列の検索、置換、パターンマッチングなどの文字列操作に使用されます。Javaでは、java.util.regex パッケージで正規表現をサポートしています。

以下は、正規表現の基本的な要素とその解説です:

  1. 文字とメタ文字:
    • 一般的な文字はそのまま使われます。ただし、メタ文字(特殊な意味を持つ文字)はエスケープするか、特定の文脈で使用されると特殊な機能を持ちます。例えば、.(ピリオド)はどんな文字にも一致しますが、\.とエスケープすると実際のピリオドと一致します。
  2. キャラクタクラス:
    • [ ]で括られた中の文字列と一致します。例えば、[aeiou]は母音に一致します。
  3. 範囲指定のキャラクタクラス:
    • [a-z]のように範囲を指定することも可能です。この例は小文字のアルファベットに一致します。
  4. 否定のキャラクタクラス:
    • [^0-9]は数字以外に一致します。
  5. ワイルドカード:
    • .(ピリオド)はどんな1文字にも一致します。
  6. 量指定子:
    • *は直前の文字やグループが0回以上繰り返すことを示し、+は1回以上、?は0回または1回です。
  7. グルーピング:
    • ( )で括られた部分は一つのグループとして扱われます。例えば、(ab)+は”ab”、”abab”、”ababab”などに一致します。
  8. アンカー:
    • ^は文字列の先頭に一致し、$は文字列の末尾に一致します。
  9. エスケープ:
    • 特殊文字をそのまま検索するためにはバックスラッシュ \ を使います。例えば、\.はピリオド自体に一致します。

Javaでは正規表現を使用するために、Pattern クラスと Matcher クラスが提供されています。これらのクラスを使用して正規表現をコンパイルし、文字列と一致させることができます。正規表現は非常に強力で柔軟なツールであり、効果的な文字列操作やバリデーションに利用されます。

「013 クラスライブラリ」問題集リスト

🎯 実習で理解を深めよう

この内容についてJavaDrillで実際に手を動かして学習できます

]]>
https://minner.asia/archives/2956/feed 0
013 クラスライブラリ(正規表現のパターンを扱うクラス) 018 問題 https://minner.asia/archives/2954 https://minner.asia/archives/2954#respond Tue, 28 Nov 2023 23:19:59 +0000 http://localhost/?p=2954

問題

ユーザーから入力された文字列が有効な電子メールアドレスとして成り立つかどうかを検証するプログラムを書いてください。

ヒント

  1. 正規表現の使用:
  2. 正規表現パターンの作成:
    • 電子メールアドレスの正規表現パターンを作成します。このパターンは、ユーザーからの入力が電子メールアドレスの形式に一致しているかどうかを確認するのに使用されます。
  3. 正規表現の構成:
    • 電子メールアドレスの正規表現は一般的に、ユーザー名、@ シンボル、ドメイン名、トップレベルドメイン(TLD)などを考慮して構成されます。これらの要素が正しい順序で配置されていることを確認します。
  4. Matcher クラスを使用:
    • Pattern クラスでコンパイルされた正規表現パターンを使用して、Matcher クラスを作成します。そして、matches() メソッドを使用して入力文字列が正規表現に一致するかどうかを確認します。
  5. エラーハンドリング:
    • ユーザーからの入力が無効な場合、適切なエラーメッセージを表示します。例えば、”有効な電子メールアドレスを入力してください”など。

これらの手順を考慮して、正規表現を使用して電子メールアドレスの有効性を検証するプログラムを作成できます。

→解答例

「013 クラスライブラリ」問題集リスト

🎯 実習で理解を深めよう

この内容についてJavaDrillで実際に手を動かして学習できます

]]>
https://minner.asia/archives/2954/feed 0