import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegTest { public static void main(String[] args) { //(?i) 代表大小寫忽略 //.*?為非貪婪演算,盡可能找最小範圍的結果值 doRegularExpression("[ABC/def]kk[123/456][ABC/def]kk[123/456]", "(?i)\\[(a.*?)/(.*?)\\]"); //.*為貪婪演算,盡可能找最大範圍的結果值 doRegularExpression("[ABC/def]kk[123/456][ABC/def]kk[123/456]", "(?i)\\[(a.*)/(.*)\\]"); /* 輸出為: =========================== 測試的句子: [ABC/def]kk[123/456][ABC/def]kk[123/456] 正規表示法: (?i)\[(a.*?)/(.*?)\] --------------------------- 第1次匹配,找到2個Group: 匹配的字串為: [ABC/def] 第1個Group: ABC 第2個Group: def --------------------------- 第2次匹配,找到2個Group: 匹配的字串為: [ABC/def] 第1個Group: ABC 第2個Group: def =========================== =========================== 測試的句子: [ABC/def]kk[123/456][ABC/def]kk[123/456] 正規表示法: (?i)\[(a.*)/(.*)\] --------------------------- 第1次匹配,找到2個Group: 匹配的字串為: [ABC/def]kk[123/456][ABC/def]kk[123/456] 第1個Group: ABC/def]kk[123/456][ABC/def]kk[123 第2個Group: 456 =========================== */ } static void doRegularExpression(String text, String regularExpression) { System.out.println("==========================="); System.out.println("測試的句子: " + text); System.out.println("正規表示法: " + regularExpression); Pattern pattern = Pattern.compile(regularExpression); Matcher matcher = pattern.matcher(text); for(int matchCount = 1 ; matcher.find(); matchCount++) { // groupCount不包括匹配的字串,即matcher.group(0) System.out.println("---------------------------"); System.out.println("第" + matchCount + "次匹配,找到" + matcher.groupCount() + "個Group:"); System.out.println("匹配的字串為: " + matcher.group(0)); for(int groupCount = 1; groupCount <= matcher.groupCount(); groupCount++) { System.out.println("第" + groupCount + "個Group: " + matcher.group(groupCount)); } } System.out.println("==========================="); System.out.println(); } }
2017年10月5日 星期四
正規表逹式 - Java 範例
紀錄下Java的正規表示法使用方法範例:
訂閱:
張貼留言
(
Atom
)
沒有留言 :
張貼留言