【Java】正規表現 [1] 一致・不一致の判定 ~Matcher.matches() ~

■ 基本編

構文

if (【文字列】.matches(【正規表現】)) {
   // 一致
} else {
   // 不一致
}

サンプル

■ 例1 : BRタグかどうかを判定する

 * 大文字小文字を区別せずに、<br>でも<br />でも対応できるようにする
Checker.java
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Checker {

   public static void main(String[] args) {
      System.out.println("<br> " + Checker.isBrTag("<br>"));
      System.out.println("<BR> " + Checker.isBrTag("<BR>"));
      System.out.println("<Br> " + Checker.isBrTag("<Br>"));
      System.out.println("<br /> " + Checker.isBrTag("<br />"));
      System.out.println("<BR  /> " + Checker.isBrTag("<BR  />"));
      System.out.println("<br a /> " + Checker.isBrTag("<br a />"));
      System.out.println("<a> " + Checker.isBrTag("<a>"));
   }
   public static boolean isBrTag(String targetValue) {
      Pattern pattern = Pattern.compile("<(?i)br\\s*[/]*>");
      Matcher matcher = pattern.matcher(targetValue);
      return matcher.matches();
   }
}
出力結果
<br> true
<BR> true
<Br> true
<br /> true
<BR  /> true
<br a /> false
<a> false
参考文献
http://hodade.adam.ne.jp/seiki/page.php?s_htmltag

■ 例2 :プログラム・バージョン「XX.XX.XX.XX.XX」

http://blogs.yahoo.co.jp/dk521123/26123295.html
にも記載しているが、プログラム・バージョン「XX.XX.XX.XX.XX」(X:0-9)かどうかを判定する処理
SampleExtenstion.java
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class SampleVersion {

   public static void main(String[] args) {
      System.out.println("Result of 01.21.22.3 : " + SampleVersion.isValidProgramVersion("01.21.22.3"));
      System.out.println("Result of 2.4.0.0 : " + SampleVersion.isValidProgramVersion("2.4.0.0"));
      System.out.println("Result of 9.11.12.1 : " + SampleVersion.isValidProgramVersion("9.11.12.1"));
      System.out.println("Result of 101.21.22.3 : " + SampleVersion.isValidProgramVersion("101.21.22.3"));
      System.out.println("Result of 10.21.122.3 : " + SampleVersion.isValidProgramVersion("10.21.122.3"));
      System.out.println("Result of 101..22.3 : " + SampleVersion.isValidProgramVersion("101..22.3"));
      System.out.println("Result of 01.21.22.x : " + SampleVersion.isValidProgramVersion("01.21.22.x"));
      System.out.println("Result of a.21.22.3 : " + SampleVersion.isValidProgramVersion("a.21.22.3"));

   }
   
   private static boolean isValidProgramVersion(String version) {
      Pattern pattern = Pattern.compile("^[0-9]{1,2}\\.[0-9]{1,2}\\.[0-9]{1,2}\\.[0-9]{1,2}");
      Matcher matcher = pattern.matcher(version);
      return matcher.matches();
   }
}
出力結果
Result of 01.21.22.3 : true
Result of 2.4.0.0 : true
Result of 9.11.12.1 : true
Result of 101.21.22.3 : false
Result of 10.21.122.3 : false
Result of 101..22.3 : false
Result of 01.21.22.x : false
Result of a.21.22.3 : false

関連記事

正規表現 [2] 複雑な文字列置き換え ~ replaceFirst / replaceAll ~

http://blogs.yahoo.co.jp/dk521123/34781790.html

正規表現 [3] 数字/文字の出現回数を数える ~Matcher.find() ~

http://blogs.yahoo.co.jp/dk521123/36448306.html

正規表現 [4] 文字列の抽出 ~Matcher.group() ~

http://blogs.yahoo.co.jp/dk521123/36604177.html

正規表現 [5] 不要文字除去 / 対象文字のみ抽出 ~ replaceFirst / replaceAll ~

http://blogs.yahoo.co.jp/dk521123/36653535.html

拡張子を変更する

http://blogs.yahoo.co.jp/dk521123/6683738.html

正規表現について

http://blogs.yahoo.co.jp/dk521123/26123295.html

C#

http://blogs.yahoo.co.jp/dk521123/24372100.html

VB

http://blogs.yahoo.co.jp/dk521123/26759038.html

JavaScript

http://blogs.yahoo.co.jp/dk521123/34640242.html

Java のプログラムバグのパターン

http://blogs.yahoo.co.jp/dk521123/33742935.html