String に対して正規表現を使用できる操作は、実際には java.util.regex.Pattern および java.util.regex.Matcher の関数を利用します。 String のmatches() メソッドを呼び出すと、実際には Pattern の静的メソッドmatches() が呼び出され、文字列が正規表現と一致するかどうかを示すブール値が返されます。
正規表現を再利用のためのオブジェクトとして扱いたい場合は、Pattern の静的メソッド COMPILE() を使用して正規表現をコンパイルできます。 COMPILE() メソッドは、正規表現を表す Pattern インスタンスを返します。その後、Pattern インスタンスの matcher() メソッドを再利用して、正規表現に一致するインスタンスを表す Matcher インスタンスを返すことができます。このインスタンスでは、正規表現条件を満たすメソッドを操作できます。例 6.11 はこれを示しています。
** 例 6.11UsePatternMatcher.java
java.util.regex.* をインポートします。
パブリック クラス UsePatternMatcher {
public static void main(String[] args) {
糸電話1 =
「ジャスティンの携帯番号: 0939-100391n」 +
「お母さんの携帯電話番号: 0939-666888n」;
パターン pattern = Pattern.compile(".*0939-\d{6}");
マッチャー matcher = pattern.matcher(phones1);
while(matcher.find()) {
System.out.println(matcher.group());
}
糸電話2 =
「キャタピラーの携帯電話番号: 0952-600391n」+
「ブッシュの携帯電話番号:0939-550391」;
matcher = pattern.matcher(phones2);
while(matcher.find()) {
System.out.println(matcher.group());
}
}
}
例 6.11 では、0939 で始まる番号を検索します。番号が複数のソース (phone1、phone2 など) から取得されていると仮定すると、正規表現をコンパイルして Pattern オブジェクトを返すことができ、比較中にこの Pattern オブジェクトを再利用できます。 matcher() を使用して、一致する Matcher インスタンスを返します。 find() メソッドは一致する文字列があるかどうかを示し、group() メソッドは一致する文字列を返すことができます。プログラムの実行結果は以下のようになります。
ジャスティンの携帯番号: 0939-100391
お母さんの携帯電話番号:0939-666888
ブッシュの携帯電話番号:0939-550391
プログラムが一致しない文字列を返すのではなく、正規表現に一致する文字列を返すことができるように、パターンとマッチャーを使用して例 6.9 を書き直してみましょう。
** 例 6.12 RegularExpressionDemo2.java
java.util.regex.* をインポートします。
パブリック クラス RegularExpressionDemo2 {
public static void main(String[] args) {
文字列テキスト = "abcdebcadxbc";
パターン pattern = Pattern.compile(".bc");
マッチャー matcher = pattern.matcher(text);
while(matcher.find()) {
System.out.println(matcher.group());
}
System.out.println();
}
}
style='font-family:宋体'>実行結果:
ABC
ebc
XBC
この記事は CSDN ブログからのものです。転載する場合は出典を明記してください: http://blog.csdn.net/wofe912/archive/2009/12/18/5030571.aspx