「Java」正規表現式で直前の文字が0個また1個にチェックするサンプル
構文
“^X?$" 直前の文字「X」が0個または1個にマッチします。
Javaコード
package com.arkgame.study; import java.util.regex.Pattern; public class TimeSeki { // 直前の文字が0個または1個にマッチする private static final String regexPt = "^X?$"; public static void main(String[] args) { String targetA = ""; String targetB = "X"; String targetC = "XX"; String targetD = "Y"; // compile文 Pattern p1 = Pattern.compile(regexPt); Pattern p2 = Pattern.compile(regexPt); Pattern p3 = Pattern.compile(regexPt); Pattern p4 = Pattern.compile(regexPt); System.out.println("***********文字列A************"); // if文 if (p1.matcher(targetA).find()) { System.out.println("文字列「" + targetA + "」 と正規表現式「" + regexPt + "」 一致"); } else { System.out.println("文字列「" + targetA + "」 と正規表現式「" + regexPt + "」 一致しません"); } System.out.println("***********文字列B****************"); if (p2.matcher(targetB).find()) { System.out.println("文字列「" + targetB + "」 と正規表現式「" + regexPt + "」 一致"); } else { System.out.println("文字列「" + targetB + "」 と正規表現式「" + regexPt + "」 一致しません"); } System.out.println("*************文字列C*************"); if (p3.matcher(targetC).find()) { System.out.println("文字列「" + targetC + "」 と正規表現式「" + regexPt + "」 一致"); } else { System.out.println("文字列「" + targetC + "」 と正規表現式「" + regexPt + "」 一致しません"); } System.out.println("*************文字列D*************"); if (p4.matcher(targetD).find()) { System.out.println("文字列「" + targetD + "」 と正規表現式「" + regexPt + "」 一致"); } else { System.out.println("文字列「" + targetD + "」 と正規表現式「" + regexPt + "」 一致しません"); } } }
実行結果
***********文字列A************
文字列「」 と正規表現式「^X?$」 一致
***********文字列B****************
文字列「X」 と正規表現式「^X?$」 一致
*************文字列C*************
文字列「XX」 と正規表現式「^X?$」 一致しません
*************文字列D*************
文字列「Y」 と正規表現式「^X?$」 一致しません