gpt4 book ai didi

java - 在 RTE 文本中用
    标签包裹
  • 标签

转载 作者:太空宇宙 更新时间:2023-11-04 07:52:01 27 4
gpt4 key购买 nike

我有一个 RTE 文本,格式如下:

<li> text </li> 
<li> text </li>
<p> text </p>
<p> text </p>
<li> text </li>
<li> text </li>

这里的问题是,“li”标签没有包含在“ul”标签中。因为我正在编写迁移脚本,所以我想使用 Java 来实现这一点。我在 Jquery 中找到了答案,但在 Java 中很难找到这样的解决方案。

注意:不确定是否重要,但这是客户在 Excel 工作表中为迁移提供的 RTE 文本。

上面文本的期望结果如下:

<ul>
<li> text </li>
<li> text </li>
</ul>
<p> text </p>
<p> text </p>
<ul>
<li> text </li>
<li> text </li>
</ul>

最佳答案

如果您只是将其作为字符串取回,这里有一个正则表达式解决方案,它应该可以工作,或者至少可以作为一个很好的起点。

String pattern1 = "(?<!</li>\\s{0,100})(<li>)";
String replace1 = "<ul><li>";

String pattern2 = "</li>(?!\\s{0,100}<li>)";
String replace2 = "</li></ul>";

模式寻找<li>前面没有 </li> 的标签标签(忽略它们之间的任何空白)然后用一个空缺 <ul><li> 替换它们标签。

然后它会寻找任何 </li>后面没有 <li> 的标签标记并替换为 </li></ul>标签

完整代码如下,或 here是一个活生生的例子

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexMatches {

public static void main( String args[] ) {
// String to be scanned to find the pattern.
String input = "<li> text </li> <li> text </li> <p> text </p> <p> text </p><li> text<span>more test</span> </li><li> text </li>";
String pattern1 = "(?<!</li>\\s{0,100})(<li>)";
String replace1 = "<ul><li>";

String pattern2 = "</li>(?!\\s{0,100}<li>)";
String replace2 = "</li></ul>";

// Create a Pattern object
Pattern r1 = Pattern.compile(pattern1);
Pattern r2 = Pattern.compile(pattern2);
// Now create matcher object.
Matcher m1 = r1.matcher(input);

input = m1.replaceAll(replace1);

Matcher m2 = r2.matcher(input);
input = m2.replaceAll(replace2);
System.out.println(input);

}
}

关于java - 在 RTE 文本中用 <ul> 标签包裹 <li> 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47680467/

27 4 0