我的问题是我想删除 <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/