Javaでの正規表現の利用

Javaには、テキストデータを処理するための強力なツールとして正規表現があります。この記事では、Java正規表現をどのように使用するかを説明します。

目次

  1. 正規表現とは
  2. Javaでの正規表現の基本的な使い方
  3. PatternとMatcherクラス
  4. 一般的な正規表現パターン
  5. まとめ

1. 正規表現とは

正規表現RegEx)は文字列検索や置換を行う際に用いられる特殊な文字列です。特定のパターンに一致する文字列を見つけ出したり、そのパターンに基づいて文字列操作を行ったりします。

String text = "Hello, my phone number is 123-456-7890.";
boolean matches = text.matches(".*\\d{3}-\\d{3}-\\d{4}.*");
System.out.println(matches); // true

2. Javaでの正規表現の基本的な使い方

JavaではStringクラス自体がmatches, replaceAll, split等、簡単なRegEx関連メソッドを提供しています。

String text = "Hello, World!";
boolean matches = text.matches("Hello, .*!"); // true

String replacedText = text.replaceAll("World", "RegEx"); // Hello, RegEx!

String[] splittedText = text.split(", "); // ["Hello", "World!"]

3. PatternとMatcherクラス

複雑な操作や高度なマッチング機能が必要な場合、JavaではPatternクラスとMatcherクラスが提供されています。これらはより詳細かつ柔軟性高くRegEx処理を行うことが可能です。

import java.util.regex.Pattern;
import java.util.regex.Matcher;

Pattern pattern = Pattern.compile("\\d+");
Matcher matcher = pattern.matcher("abc123def456");

while (matcher.find()) {
    System.out.println(matcher.group()); // prints: 123 and then 456
}

4.一般的な正規表現パターン

以下は一般的によく使用される正規表現のパターンとその説明です。

  • .: 任意の1文字
  • *: 直前の文字が0回以上繰り返す
  • +: 直前の文字が1回以上繰り返す
  • {n}: 直前の文字がn回繰り返す
  • [abc]: 'a'または'b'または'c'
  • (abc|def): 'abc'または'def'
String text = "aabbbcc";
boolean matches = text.matches("a*b*c*"); // true

String text = "Hello, World!";
boolean matches = text.matches("Hello, .*!"); // true

Pattern pattern = Pattern.compile("\\d+");
Matcher matcher = pattern.matcher("abc123def456");

while (matcher.find()) {
    System.out.println(matcher.group()); // prints: 123 and then 456
}

5.まとめ

Java正規表現を使うことで、複雑な文字列操作や検索を効率的に行うことが可能です。しかし、正規表現自体も学習コストがあります。この記事がJavaでの正規表現利用への第一歩となれば幸いです。