This can be done using a helper function.
BiFunction<Matcher, Function<Matcher, Object>, Collection<?>> placeHolderExtractor = (mch, extracter) -> {
List<Object> list = new ArrayList<>();
while(mch.find()) {
list.add(extracter.apply(mch));
}
return list;
};
String htmlStr = "<Html> <Table> <TR><TD>||BuySell||</TD></TR> <TR><TD>||ExchangeName||</TD></TR> </Table></Html>";
String regex = "(\\|\\|)([\\w]+)\\1";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(htmlStr);
List<String> placeHolderList = placeHolderExtractor.apply(matcher, macher -> macher.group(2))
.stream()
.map(String::valueOf)
.collect(Collectors.toList());