group的含義:
1.groupCount:匹配規(guī)則中左邊小括號(hào)的個(gè)數(shù)((?
除外).
Pattern pattern = Pattern.compile("<p>(.*?)</p>");
,groupCount為1.
Pattern pattern = Pattern.compile("<p>(.*?)(.+?)</p>");
,groupCount為2.
Pattern pattern = Pattern.compile("<p>(.*?)(.+?)(?.)</p>");
,groupCount為2.
2.Matcher.group(int group):獲取第i組匹配到的內(nèi)容.
matcher.group(0);匹配的整個(gè)規(guī)則字符串.
matcher.group(i);匹配第i組規(guī)則字符串.
3.matcher.start(i group)/end():
int start = matcher.start();返回當(dāng)前匹配到的字符串在原目標(biāo)字符串中的位置
int end = matcher.end();返回當(dāng)前匹配的字符串的最后一個(gè)字符在原目標(biāo)字符串中的索引位置
int start = matcher.start(1);第一個(gè)分組匹配的內(nèi)容,也就是John開(kāi)始的索引位置,0
4.java中使用正則匹配的完整流程:
Pattern pattern = Pattern.compile("<p>(.*?)</p>");
Matcher matcher = pattern.matcher("<p><b>R</b>espect diversity<br><b>C</b>ontribute to a safe environment</p><p><b>C</b>111111<br><b>C</b>ontribute to a safe environment</p><p><b>D</b>222222<br><b>C</b>ontribute to a safe environment</p><p><b>C</b>333333<br><b>C</b>ontribute to a safe environment</p>");
XLog.d("group_count:" + matcher.groupCount());
while (matcher.find()) {
XLog.d("group0:" + matcher.group(0));
XLog.d("group1:" + matcher.group(1));
}
總結(jié):java正則中的組==子表達(dá)式