工具方法:
/**
* 解析target,并返回pattern匹配到的结果集合,不包括整个字符都匹配的情况
* @param target
* @param pattern
* @return
*/
public static List<String> patternParseGroup(String target, String pattern) {
List<String> result = new ArrayList<String>();
// 如果不添加Pattern.DOTALL,那么匹配到字符串中的换行(\n)时,匹配会提前结束。导致后面字符的匹配不到
Pattern p = Pattern.compile(pattern, Pattern.DOTALL);
Matcher m = p.matcher(target);
while (m.find()) {
int count = m.groupCount();
for (int i = 0; i < count; i++) {
// 忽略整个字符匹配的情况,所以跳过了m.group(0)
result.add(m.group(i + 1));
}
}
return result;
}
测试方法:
public static void main(String[] args) {
System.out.println(patternParseGroup("<a href=\"http://www.99.com.cn/pifu/\" target=\"_blank\