gpt4 book ai didi

Java正则表达式仅替换html文件中的文本

转载 作者:太空宇宙 更新时间:2023-11-04 11:59:02 25 4
gpt4 key购买 nike

我必须用 Java 编写一些代码,突出显示 JTextPane 中显示的 html 文件的文本。 .

为了突出显示,我替换了 "match""<span style=\"background-color: #FFFF00\">match</span>"并将整个替换文本设置在JTextPane中。一切正常!我在java.util.regex.Pattern的帮助下做到了这一点和java.util.regex.Matcher .

现在,我确定了一个问题:匹配器还匹配 html 标记内的文本。例如这一行:

<pre><a name="hello-world">Hello World</a></pre>

我需要一个正则表达式来创建 java.util.regex.Pattern仅在字符串“Hello World”中搜索。

所以,如果我想突出显示 "e" 的匹配项它应该看起来像

<pre><a name="hello-world">H<span style=\"background-color: #FFFF00\">e</span>llo World</a></pre>

非常感谢您的帮助!!

最佳答案

尝试使用 Jsoup html 解析器,可用于从 URL、文件或字符串中抓取和解析 HTML,还可以操作 HTML 元素、属性和文本。您的案例示例:

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

public class NewClass2 {

public static void main(String args[]) {
String html = " <!DOCTYPE html>\n" +
"<html>\n" +
"<head>\n" +
"<title>Page Title</title>\n" +
"</head>\n" +
"<body>\n" +
"<h1>This is a Heading which should match</h1>\n" +
"<p>This is a paragraph which should also match.</p>\n" +
"</body>\n" +
"</html> ";

String matchWord = "match";
Document doc = Jsoup.parse(html);
System.out.println("before : \n");
System.out.println(doc.toString()+"\n");

Elements matchingElements = doc.getElementsContainingOwnText(matchWord);
for (Element e : matchingElements) {
e.html(e.html().replace(matchWord,"<span style=\"background-color: #FFFF00\">"+matchWord+"</span>"));
}
System.out.println("after : \n");
System.out.println(doc.toString());
}
}

关于Java正则表达式仅替换html文件中的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41102743/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com