■ はじめに
今回は、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