Java 在html标记上使用正则表达式,但保留分隔符

Java 在html标记上使用正则表达式,但保留分隔符,java,regex,Java,Regex,我正在尝试将数据库中富格文本字段中的html标记字符串拆分为有序的标记和单词。我希望保持分隔符的顺序,以便重新生成字符串。我正在使用语言翻译API来转换单词 String original = "<b>hello!</b><br><br><b><u>this is an example</u></b><br>"; String reg = "(?=<(“

我正在尝试将数据库中富格文本字段中的html标记字符串拆分为有序的标记和单词。我希望保持分隔符的顺序,以便重新生成字符串。我正在使用语言翻译API来转换单词

String original = "<b>hello!</b><br><br><b><u>this is an example</u></b><br>";
String reg = "(?=<(“[^”]*”|'[^’]*’|[^'”>])*>)";
String[] conversion = original.split(reg);

for(String token : conversion) {
    System.out.println(token);
} 
String original=“你好!

这是一个示例
”; 字符串reg=“(?=])*>)”; 字符串[]转换=原始.split(reg); for(字符串标记:转换){ System.out.println(令牌); }
我得到以下输出:

<b>hello!
</b>
<br>
<br>
<b>
<u>this is an example
</u>
</b>
<br>
你好!


这是一个例子
非常接近。我尝试使用Lookbehind regex
(?=])*>)|(?)
,但遇到了一个错误“Invalid regex:Lookbehind group在索引62附近没有明显的最大长度”。它指向这一部分:

(?=<(“[^”]*”|'[^’]*’|[^'”>])*>)|(?<=<(“[^”]*”|'[^’]*’|[^'”>])*>)
                                                              ^
(?=])*>)|(?)
^
我正在尝试为每一行获取以下输出:

<b>
hello!
</b>
<br>
<br>
<b>
<u>
this is an example
</u>
</b>
<br>

你好


这是一个例子

我是新加入regex的,这一切对我来说都像是巫术。有人知道任何Java友好的查找或技术来实现这一点吗?

您可以在
之前使用空位置进行拆分,但不能在字符串开头使用空位置进行拆分:

original.split("(?!^)(?:(?<=>)|(?=<))")

哦,那更简单。成功了。如果你把它列为一个答案,我会记下来,很高兴我的答案对你有用。如果我的回答对你有帮助,也请告诉我