Javaには、テキストデータを処理するための強力なツールとして正規表現があります。この記事では、Javaで正規表現をどのように使用するかを説明します。
目次
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での正規表現利用への第一歩となれば幸いです。