【Java】正規表現 ~ 一致・不一致の判定 ~

■ はじめに

今回は、JavaのMatcher.matches() を使って
一致・不一致の判定を行う。

目次

【1】基礎知識
 1)構文
【2】サンプル
 例1:BRタグかどうかを判定する
 例2:プログラム・バージョン「XX.XX.XX.XX.XX」

【1】基礎知識

1)構文

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

【2】サンプル

例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」

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

関連記事

正規表現 ~ 文字列の抽出 ~
https://dk521123.hatenablog.com/entry/2016/12/30/142128
正規表現 ~ 数字/文字の出現回数を数える ~
https://dk521123.hatenablog.com/entry/2016/10/19/004224_1
正規表現 ~ 不要文字除去 / 対象文字のみ抽出 ~
https://dk521123.hatenablog.com/entry/2017/01/19/213612
正規表現 ~ 複雑な文字列置き換え ~
https://dk521123.hatenablog.com/entry/2015/04/08/000052
正規表現 全般
https://dk521123.hatenablog.com/entry/2011/09/10/235712