- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图转义仅在 <pre>
内的 HTML我遇到的标签(不要问我这里面有没有逻辑)
我确实写了这个简短的程序,它工作正常,但我想跳到下一场比赛,而不实际添加 id="ProcessedTag"
所以它不仅仅取代第一场比赛。这是我的代码:
import java.util.regex.Pattern;
import java.util.regex.Matcher;
import static org.apache.commons.lang3.StringEscapeUtils.escapeHtml4;
public class ReplaceHTML {
public static void main(String[] args) {
String html = "something something < > && \"\" <pre> text\n" +
"< >\n" +
"more text\n" +
"&\n" +
"<\n" +
"</pre>\n" +
"and some more text\n" +
"<pre> text < </pre>";
Pattern pattern = Pattern.compile("(?i)(?s)<pre>(.*?)</pre>");
Matcher matcher = pattern.matcher(html);
while(matcher.find()) {
html = html.replaceFirst("(?i)(?s)<pre>(.*?)</pre>", "<pre id=\"ProcessedTag\">" + escapeHtml4(matcher.group(1)) + "</pre>");
}
System.out.println(html);
}
}
因此,为了不只替换第一次出现的情况,我决定添加此 id="ProcessedTag"
,因此replaceFirst可以移动到下一个匹配。我想应该有一种更聪明的方法来做到这一点,而不需要添加任何额外的东西。对不起,如果这是一个愚蠢的问题或者之前已经被问过(找不到任何有用的东西)
问候。
最佳答案
您应该在此处使用 Matcher#appendReplacement
:
Pattern pattern = Pattern.compile("(?i)(?s)<pre>(.*?)</pre>");
Matcher matcher = pattern.matcher(html);
StringBuffer buffer = new StringBuffer("");
while (matcher.find()) {
matcher.appendReplacement(buffer, "<pre>" + escapeHtml4(matcher.group(1)) + "</pre>");
}
matcher.appendTail(buffer);
System.out.println(buffer);
请注意,通常不希望对 HTML 内容使用正则表达式。但是,在这种情况下,您要替换的标签不是嵌套的,正则表达式可能是可行的。
关于Java-replaceFirst-跳转到下一个匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56608273/
假设我有一个字符串 String link = "www.thisisalink.com/tick1=@tick1@&tick2=@tick2@&tick3=@tick3@&tick4=@tick4@
我试图转义仅在 内的 HTML我遇到的标签(不要问我这里面有没有逻辑) 我确实写了这个简短的程序,它工作正常,但我想跳到下一场比赛,而不实际添加 id="ProcessedTag"所以它不仅仅取代第
想象一个场景,您正在将 DNA 的碱基更改为其补码(A -> T,T -> A等) 如果我想在一行中执行此操作,只需一个替换命令(无论是 replaceFirst、replaceAll 等),我将如何
以下例程在 WIN XP x32、JAVA 版本 7 Update 9 和 WIN7 x64、JAVA 版本 6 Update 32 上的行为有所不同。 private int getNrOfMatc
假设我想用“zzz”替换字符串中第一次出现的“yyy”。 String.replaceFirst 似乎是一个完美的解决方案 str = str.repaceFirst("yyy", "zzz"); 但
嗨,我正在尝试编写代码来读取包含一首诗的文件。然后它将每行中的第一个“您”更改为“我们”。我一直在尝试使用replaceFirst()、replace()、replaceAll();然而,没有一个人能
scala > val a = (x:Int)=>x+1 res0: Int => Int = scala > val b = a.getClass b: Class[_ Int] = c
我正在尝试替换字符串的一部分。该部分包含一些特殊字符: #L(inches)=24# 我知道replaceFirst是正则表达式驱动的,但我似乎无法创建与字符串中的这部分匹配的正则表达式,有什么想法吗
我使用httpclient来抓取html。在我的代码中,我发现 html = html.replaceFirst("[cC][hH][aA][rR][sS][eE][tT]\\s*?=\\s*?([g
这个问题已经有答案了: Not able to replace all for dollar sign (4 个回答) 已关闭 3 年前。 我有一个字符串,我尝试用它替换第一次出现的 %s。 例如:
我有一个“余额”字符串,前面包含一个美元符号。我想修改这个标志,这样我就可以将刺痛转换为双倍,但我的代码不起作用。 这是我尝试过的: String balance = "$5.30"; balance
有什么方法可以让 .replaceFirst() 开始仅替换特定字符串之后的 a 吗?例如我知道正则表达式不能很好地处理 html,并且我的 html 文本由 1 个 h2 标题和一个段落组成。现在,
我有一个包含 xyaahhfhajfahj{adhadh}fsfhgs{sfsf} 的字符串。 现在我想用空格替换{string}。 我想用空替换大括号和其中的字符串。 我想为它使用 replaceF
我在使用 replaceFirst 时得到一个奇怪的 ArrayOutOfBoundsException: "this is an example string".replaceFirst("(^th
使用java,我尝试将某个字符串的出现替换为其他字符串。它在大多数情况下都有效。但有时特定的字符串在给定的内容中不会被替换。 当我使用indexOf方法搜索给定内容中的某个字符串时,我可以正确获取该字
在 Java 中,String 类提供了 3 种字符串替换方法,分别是 replace()、replaceFirst() 和 replaceAll(),本文将详细介绍它们的使用方法。 repla
好吧,我有一个在使用 string.replace() 时替换文本的方法,它可以工作,但是当我切换到 relpaceFirst() 时,如下所示,它不再工作,我在这里做错或遗漏了什么? private
这个问题已经有答案了: Why does replaceAll fail with "illegal group reference"? (8 个回答) 已关闭 5 年前。 我尝试在执行restTem
因此,我需要返回修改后的字符串,其中它用另一个 token 替换 token 的第一个实例,同时跳过注释。这是我正在讨论的示例: This whole quote is one big String
当我这样做的时候 String s = "2r2"; System.out.println(s.replaceFirst("2r2","4")); 它有效,打印 4,但是当我这样做时 String s
我是一名优秀的程序员,十分优秀!