正規表現で特殊文字を定義する
このステップでは、Java で正規表現 (regex) を使用して特殊文字を定義する方法を学びます。正規表現は、文字列内のパターンマッチングに強力なツールです。正規表現の特殊文字には特定の意味があり、パターンを定義するために使用されます。
以下は、正規表現で一般的な特殊文字のいくつかです。
.
: 任意の単一文字に一致します (改行を除く)。
*
: 直前の要素を 0 回以上一致させます。
+
: 直前の要素を 1 回以上一致させます。
?
: 直前の要素を 0 回または 1 回一致させます。
[]
: 角括弧内の任意の単一文字に一致します。
|
: OR 演算子として機能します。
()
: 要素をグループ化します。
\
: 特殊文字をエスケープし、リテラル文字と一致させます。
たとえば、任意の数字に一致させたい場合は、\d
を使用できます。任意の非数字に一致させたい場合は、\D
を使用します。同様に、\s
は任意の空白文字に一致し、\S
は任意の非空白文字に一致します。
特殊文字の正規表現パターンを定義する方法を示すために、簡単な Java プログラムを作成しましょう。
-
WebIDE エディタで HelloJava.java
ファイルが開いていない場合は、開きます。
-
ファイルの内容全体を次のコードに置き換えます。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class HelloJava {
public static void main(String[] args) {
String text = "Hello! This is a test string with some special characters: @#$%^&*()_+";
// Define a regex pattern to match special characters
String regex = "[^a-zA-Z0-9\\s]";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(text);
System.out.println("Original String: " + text);
System.out.println("Regex Pattern: " + regex);
System.out.print("Special characters found: ");
while (matcher.find()) {
System.out.print(matcher.group() + " ");
}
System.out.println(); // Print a newline at the end
}
}
このコードの新しい部分を理解しましょう。
import java.util.regex.Matcher;
と import java.util.regex.Pattern;
: これらの行は、Java で正規表現を扱うために必要なクラスをインポートします。
String regex = "[^a-zA-Z0-9\\s]";
: この行で正規表現パターンを定義しています。
[]
: これは文字クラスで、角括弧内の任意の単一文字に一致します。
^
: 文字クラスの先頭 ([^...]
) で使用されると、クラスを否定します。つまり、クラス内にない任意の文字に一致します。
a-zA-Z0-9
: これは任意の小文字 (a から z)、任意の大文字 (A から Z)、または任意の数字 (0 から 9) に一致します。
\\s
: これは任意の空白文字 (スペース、タブ、改行など) に一致します。\
は Java 文字列での特殊文字なので、エスケープするために \\
を使用します。
- したがって、全体のパターン
[^a-zA-Z0-9\\s]
は、文字、数字、または空白文字ではない任意の文字に一致します。これらがこのコンテキストでの「特殊文字」です。
Pattern pattern = Pattern.compile(regex);
: この行は、正規表現パターンを Pattern
オブジェクトにコンパイルします。同じパターンを複数回使用する場合、パターンをコンパイルするとパフォーマンスが向上します。
Matcher matcher = pattern.matcher(text);
: この行は、コンパイルされたパターンを使用して入力文字列 (text
) に対してマッチ操作を実行するための Matcher
オブジェクトを作成します。
while (matcher.find())
: このループは、入力シーケンスの次の部分シーケンスがパターンに一致するものを見つけます。
matcher.group()
: これは一致した部分シーケンスを返します。
-
ファイルを保存します (Ctrl+S または Cmd+S)。
-
ターミナルで javac
コマンドを使用してプログラムをコンパイルします。
javac HelloJava.java
-
java
コマンドを使用してコンパイルされたプログラムを実行します。
java HelloJava
次のような出力が表示されるはずです。
Original String: Hello! This is a test string with some special characters: @#$%^&*()_+
Regex Pattern: [^a-zA-Z0-9\s]
Special characters found: ! : @ ## $ % ^ & * ( ) _ +
特殊文字を識別する正規表現パターンを正常に定義し、Java プログラムで使用しました。