はじめに
Java プログラミングの世界では、正規表現 (regex) は文字のフィルタリングやテキスト操作に強力なツールを提供します。このチュートリアルでは、Java の正規表現機能を使って文字をフィルタリングし、処理する包括的な手法を探ります。これにより、開発者が文字列の取り扱いスキルを向上させ、より堅牢なテキスト処理ソリューションを作成するのに役立ちます。
Java プログラミングの世界では、正規表現 (regex) は文字のフィルタリングやテキスト操作に強力なツールを提供します。このチュートリアルでは、Java の正規表現機能を使って文字をフィルタリングし、処理する包括的な手法を探ります。これにより、開発者が文字列の取り扱いスキルを向上させ、より堅牢なテキスト処理ソリューションを作成するのに役立ちます。
Java の正規表現 (regex) は、パターンマッチングやテキスト操作に強力なツールです。特定のパターンに基づいて文字列の検索、検証、変更を行う簡潔で柔軟な方法を提供します。
正規表現パターンは、検索パターンを定義する文字のシーケンスです。以下を含むことができます。
| メソッド | 説明 | 例 |
|---|---|---|
| matches() | 文字列全体がパターンに一致するかをチェックする | "123".matches("\\d+") |
| find() | 文字列内でパターンを検索する | Pattern.compile("\\w+").matcher(text).find() |
| replaceAll() | すべての一致部分を指定されたテキストに置き換える | text.replaceAll("\\s", "_") |
. 任意の単一文字に一致する* 0 回以上の出現に一致する+ 1 回以上の出現に一致する? 0 回または 1 回の出現に一致する^ 文字列の先頭に一致する$ 文字列の末尾に一致する正規表現は以下に不可欠です。
LabEx では、Java 開発者にとって正規表現を習得することを基本スキルとして推奨しています。
String text = "Hello, Java Regex!";
boolean isMatch = text.matches(".*Regex.*");
System.out.println(isMatch); // true
この例は、Java での基本的な正規表現パターンマッチング手法を示しています。
文字フィルタリングは、テキスト処理における重要な手法であり、開発者が正規表現を使用して文字列から特定の文字を選択的に削除、置換、または抽出することを可能にします。
| メソッド | 目的 | 例 |
|---|---|---|
| replaceAll() | 特定の文字を削除する | text.replaceAll("[^a-zA-Z]", "") |
| replaceFirst() | 最初に一致する部分を置換する | text.replaceFirst("\\d", "X") |
| matches() | 文字セットを検証する | text.matches("[A-Za-z]+") |
public class CharacterFilter {
public static String filterAlphanumeric(String input) {
return input.replaceAll("[^a-zA-Z0-9]", "");
}
public static void main(String[] args) {
String text = "Hello, World! 123";
String filtered = filterAlphanumeric(text);
System.out.println(filtered); // Output: HelloWorld123
}
}
public class CharacterExtractor {
public static String extractDigits(String input) {
return input.replaceAll("[^0-9]", "");
}
public static void main(String[] args) {
String text = "LabEx2023 Course";
String digits = extractDigits(text);
System.out.println(digits); // Output: 2023
}
}
\d 数字に一致する\w 単語文字に一致する\s 空白文字に一致する\p{Punct} 句読点文字に一致するLabEx では、Java で効率的な文字列操作を行うために、文字フィルタリング手法を習得することの重要性を強調しています。
public class EmailValidator {
private static final String EMAIL_REGEX =
"^[A-Za-z0-9+_.-]+@[A-Za-z0-9.-]+$";
public static boolean isValidEmail(String email) {
return email.matches(EMAIL_REGEX);
}
public static void main(String[] args) {
System.out.println(isValidEmail("user@labex.io")); // true
System.out.println(isValidEmail("invalid-email")); // false
}
}
public class PasswordValidator {
private static final String PASSWORD_REGEX =
"^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=])(?=\\S+$).{8,20}$";
public static boolean isStrongPassword(String password) {
return password.matches(PASSWORD_REGEX);
}
public static void main(String[] args) {
System.out.println(isStrongPassword("LabEx2023!")); // true
System.out.println(isStrongPassword("weak")); // false
}
}
| パターン | 説明 | 例 |
|---|---|---|
\d{3}-\d{2}-\d{4} |
社会保障番号 (Social Security Number) | 123-45-6789 |
^\+?1?\d{10,14}$ |
電話番号 (Phone Number) | +1234567890 |
\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}\b |
メールアドレスの検証 (Email Validation) | user@example.com |
public class DataExtractor {
public static void extractInfo(String text) {
// Extract dates
Pattern datePattern = Pattern.compile("\\d{4}-\\d{2}-\\d{2}");
Matcher dateMatcher = datePattern.matcher(text);
while (dateMatcher.find()) {
System.out.println("Found date: " + dateMatcher.group());
}
}
public static void main(String[] args) {
String sampleText = "LabEx course started on 2023-07-15";
extractInfo(sampleText);
}
}
public class TextTokenizer {
public static void tokenizeText(String text) {
// Split by multiple delimiters
String[] tokens = text.split("[,;\\s]+");
for (String token : tokens) {
System.out.println("Token: " + token);
}
}
public static void main(String[] args) {
String input = "Java, Regex; Parsing, Techniques";
tokenizeText(input);
}
}
Java の正規表現による文字フィルタリング手法を習得することで、開発者はテキストデータを効率的に検証、抽出、変換することができます。これらの手法は、複雑な文字列処理タスクを柔軟かつ簡潔に扱うアプローチを提供し、様々な Java アプリケーションでよりエレガントでパフォーマンスの高いコードを実現することができます。