java - 我如何从页面中使用 Java 正则表达式 DIV

标签 java regex regex-greedy

我的问题是我想删除 <div> xxx </div>来自任意 HTML 页面。

所以给定一个页面......

<div> foo <div> bar <div> xxx </div> foo </div> bar </div>

我想结束

<div> foo <div> bar  foo </div> bar </div>

我认为 replaceFirst("<div.*?xxx.*?</div>", "")会做的。我承担了魔法?会使匹配变得懒惰并保留初始的 div。但是它坚持从第一个div开始贪心匹配。

由于我花了一个小时才找到解决方案,所以我将我的答案发布在下面以保存后续答案。

最佳答案

我认为这可能是使用正则表达式完成此操作的更正确方法,假设您想要最后一个 <div> :

"<div>((?!<div>).)*?xxx((?!<div>).)*?</div>"

尽管我倾向于说,如果您像这样使用负面环视,您最好找到更适合该任务的工具。这真的很学术。也许有趣。但是,如果您从提供的示例(我猜是微不足道的示例)中稍微增加一点复杂性,那么这个以及任何提供的解决方案都不会很好。

关于它们的更多信息,这里有一个很棒的答案: Regular expression to match a line that doesn't contain a word?

关于java - 我如何从页面中使用 Java 正则表达式 DIV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12807244/

相关文章:

regex - 如何在htaccess中引用当前目录

python - 用于匹配温度的正则表达式 (°c)

python - 正则表达式搜索环视

java - 输出格式打印带有两位小数和占位符的逗号

Java happens-before 关系

Java 在字符串数组列表中搜索另一个数组列表中的单词

regex - R正则表达式

javascript - 如何拆分每个单词和空格?

regex - 如何正则表达式以数字结尾的字符串并对每个部分进行分组

java - 在 weblogic 中使用 Jersey 接收到对 RestFul web 服务方法的重复调用