public static List<String> split(final String pattern, final String string) { if (!hasGrouping(pattern)) { return list(string.split(pattern)); } final Matcher matcher = Pattern.compile(pattern, 0).matcher(string); final List<String> matches = list(); int start = 0; while (matcher.find()) { matches.add(string.substring(start, matcher.start())); for (int i = 0; i < matcher.groupCount(); i++) { matches.add(matcher.group(i + 1)); } start = matcher.end(); } matches.add(string.substring(start)); return matches; }
public static List<String> split(final String pattern, final String string) { if (!hasGrouping(pattern)) { return list(string.split(pattern)); } final Matcher matcher = Pattern.compile(pattern, 0).matcher(string); final List<String> matches = list(); int start = 0; while (matcher.find()) { matches.add(string.substring(start, matcher.start())); for (int i = 0; i < matcher.groupCount(); i++) { matches.add(matcher.group(i + 1)); } start = matcher.end(); } matches.add(string.substring(start)); return matches; }