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
)
沒有留言 :
張貼留言