通过复杂的正则表达式和标记保存来标记 html 中的文本

问题描述 投票:0回答:1
regex
1个回答
0
投票

要使用 Jsoup 的正则表达式模式突出显示 HTML 文档中的文本,您可以按照以下步骤操作:

  1. 将 HTML 内容解析为 Jsoup 文档。
  2. 将 Document.select() 方法与自定义 ElementFilter 结合使用,该方法根据正则表达式匹配元素。
  3. 对于每个匹配的元素,将要突出显示的文本包装在标签中。
  4. 确保 DOM 在操作后仍然有效。

以下是如何在代码中实现此功能的示例:

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

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class Highlighter {

    public static void main(String[] args) {
        String html = "Your HTML string here";
        String regex = "Your regular expression here";

        Document doc = Jsoup.parse(html);
        Elements elements = doc.select("*");

        Pattern pattern = Pattern.compile(regex);

        for (Element element : elements) {
            String text = element.text();
            Matcher matcher = pattern.matcher(text);

            if (matcher.find()) {
                String matchedText = matcher.group();
                String highlighted = "<mark>" + matchedText + "</mark>";
                text = text.replace(matchedText, highlighted);
                element.text(""); // Clear the current text
                element.html(text); // Set the new text with highlighted parts
            }
        }

        System.out.println(doc.toString());
    }
}

请将“此处的 HTML 字符串”替换为您的实际 HTML 内容,并将“此处的正则表达式”替换为您的实际正则表达式。此代码将查找与正则表达式匹配的文本并将其包装在标签中。请务必彻底测试此代码,以确保其按照您的特定用例的预期工作并维护有效的 DOM 结构。请记住,使用正则表达式操作 HTML 可能很棘手,因此仔细处理边缘情况和嵌套元素非常重要。

© www.soinside.com 2019 - 2024. All rights reserved.