|
|
 |
連載
Java
正規表現 |
|
1.状況
正規表現とは簡単に言ってしまえば「文字列を表すためのパターン」で、そのパターンに適合しているかどうかを調べたり、
パターンに合っている部分を抽出したりする機能です。
JDK1.4から、java.util.regex パッケージが導入され、正規表現のクラスが標準で使用できるようになりました。
JDK1.4が出る前は正規表現を扱おうとするには、次のようなパッケージを使用する必要がありました。
これらはPerl5互換で、Perlで使われる正規表現がそのまま使えるパッケージになっています。
Perlにはこの便利な正規表現があり、Webでの文字列チェック、検索、置換などで非常に有用でした。
今回はこの新しい機能を確認してみます。
|
2.パターンマッチング
正規表現を扱うには、正規表現のパターンを扱う必要があります。これには java.util.regex.Pattern クラスを使用します。
Pattern クラスで扱える正規表現の詳細はJDKのドキュメントを参照することにして、ここでは例を挙げておきます。
| パターン |
マッチ対象 |
| abc |
abc |
| [^abc] |
abc以外の文字 (^は否定を表す) |
| [a-z] |
aからzまでの1文字(小文字) |
| [0-9] |
0から9までの数字の1文字 |
| [^a-f] |
aからf以外の文字 |
| [a-d[m-p]] |
aからd、又はmからpの文字 |
| [a-z&&[^m-p]] |
mからpを除くaからzまでの文字 |
| . |
任意の文字 |
| \d |
数字:[0-9] (\Dで否定) |
| \s |
空白文字 (\Sで否定) |
| \w |
単語構成文字 (\Wで否定) |
| ^abc |
先頭にabcがある。 (^は先頭を表す) |
| abc$ |
末尾にabcがある。 ($は末尾を表す) |
| abc* |
abの後、次にcが0個以上ある。 |
| abc+ |
abの後、次にcが1個以上ある。 |
| d\w{3} |
dの後、単語構成文字が3回 |
| Mickey|minie |
Mickey又はminie |
標準的な呼び出しシーケンスは、次のようになります。
Pattern pattern = Pattern.compile("パターン文字列");
Matcher matcher = pattern.matcher("調査対象文字列");
boolean b = matcher.matches(); // trueならばパターンに一致
|  |
| |
1: try {
2: Pattern pattern = Pattern.compile(regex);
3: Matcher matcher = pattern.matcher(input);
4:
5: if (matcher.matches()) {
6: System.out.println("一致しました");
7: } else {
8: System.out.println("一致しません");
9: }
10: } catch (PatternSyntaxException ex) {
11: ex.printStackTrace();
12: }
|
|
| パターンマッチングの例 |
|
|
| |
 |
|
INDEX |
| |
連載 Java 正規表現 |
 |
1.パターンマッチング |
| |
2.分割・置換 |
 |
|