[英]Wrap <li> tags with <ul> tag in RTE text
我有一個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>
標簽
下面的完整代碼,或在這里是一個活生生的例子
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);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.