java
java
Java2 SE 5.0 API
Java2 SE 1.4 API
Java2 EE API
Struts 1.0.2
MSDN2 Library
MySQL 5.1
MySQL 4.1
HTMLリファレンス
CSSリファレンス
JavaScript
基本カラーチャート
カレンダー
 最新PG・講座情報
 最新ニュース
 電子辞書・辞典
ご意見・ご要望はこちらまで

連載

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.分割・置換
Top
Copyright© 2003-2007 FumikiChan All Rights Reserved.
http://www.fumikichan.net/