例如:
String text = "testing<hi>bye</hi><b>bla bla!";
Pattern p = Pattern.compile("<(.*?)>");
Matcher m = p.matcher(text);
int last_match = 0;
List<String> splitted=new ArrayList<>();
while (m.find()) {
splitted.add(text.substring(last_match,m.start()));
splitted.add(m.group());
last_match = m.end();
}
splitted.add(text.substring(last_match));
System.out.println(splitted.toString());
印刷[testing, <hi>, bye, </hi>, , <b>, bla bla!]
那是你要的吗?如果您不想要它们,您可以轻松地修复代码以省略空元素:
while (m.find()) {
if(last_match != m.start())
splitted.add(text.substring(last_match,m.start()));
splitted.add(m.group());
last_match = m.end();
}
if(last_match != text.length())
splitted.add(text.substring(last_match));
请记住,正如评论中所指出的:使用正则表达式来解析任意 HTML/XML 通常是一个坏主意。