【发布时间】:2019-11-26 08:08:20
【问题描述】:
我想从 html 中删除特定的单词。我正在将 HTML 处理为 java 中的字符串。该词必须嵌套在特定标签中。我想删除.wrapper,只有当它在<template>和<style>里面时,我不想删除html中的所有.wrappers。
我已尝试通过正则表达式将单词替换为空字符串,但它不能按我的需要工作。我错过了一些东西,无法弄清楚是什么。
要处理的字符串:
String input = "<div><template><div><style>.wrapper #popup-popupTemplate1 .popup-content { width: 800px; height: 300px }</style></div></template><div>"
所需的输出(删除特定的单词,.wrapper):
String output = "<div><template><div><style>#popup-popupTemplate1 .popup-content { width: 800px; height: 300px }</style></div></template><div>"
这对我不起作用,但在在线正则表达式调试器中,这个正则表达式选择我需要的单词。
String result = input.replaceAll("<template>.*?<style>.*?(\\.wrapper).*?<\\/style>.*?<\\/template>", "");
【问题讨论】:
-
我假设
replaceAll()替换了您的完整匹配项,而不仅仅是.wrapper所在的捕获组。您可以将使用代码获得的输出添加到您的问题中吗? -
您是否尝试过使用 JSoup 或类似方法沿着 DOM 树向下移动到
<style>元素,然后使用正则表达式,而不是尝试使用单个正则表达式来统治它们?