Regex 正则表达式HTML嵌套引号替换
我在HTML中有多个嵌套引号,如下所示:Regex 正则表达式HTML嵌套引号替换,regex,Regex,我在HTML中有多个嵌套引号,如下所示: <div class="quote-container"> <div class="quote-block"> <div class="quote-container"> <div class="quote-block"> </div> </div> <div class="quote-contain
<div class="quote-container">
<div class="quote-block">
<div class="quote-container">
<div class="quote-block">
</div>
</div>
<div class="quote-container">
<div class="quote-block">
</div>
</div>
<div class="quote-container">
<div class="quote-block">
</div>
</div>
</div>
</div>
<div class="quote-container">.*<div class="quote-block">.*(?!<div).*</div>.*</div>
我需要搜索并删除引号。我使用的表达方式是:
<div class="quote-container">.*<div class="quote-block">.*</div>.*</div>
这适用于单引号。但是,上面的多嵌套引号示例存在一个问题
我的任务是搜索:
<div class="quote-container">.*<div class="quote-block">
加上任何不包含
<div
以
.*</div>.*</div>
我尝试了如下的lookback和lookahead断言:
<div class="quote-container">
<div class="quote-block">
<div class="quote-container">
<div class="quote-block">
</div>
</div>
<div class="quote-container">
<div class="quote-block">
</div>
</div>
<div class="quote-container">
<div class="quote-block">
</div>
</div>
</div>
</div>
<div class="quote-container">.*<div class="quote-block">.*(?!<div).*</div>.*</div>
但它们不起作用
有办法完成我的任务吗?我需要一个perl表达式,我可以在TextPipe中使用,我将它用于论坛解析,然后我进行文本到语音的转换
提前谢谢。我想你的问题是你在使用表达式。*
尝试用非贪婪的。*替换所有。*?我个人会通过替换掉引号来解决这个问题,直到不再有任何引号可以替换掉。在一次正则表达式替换中确实无法处理此问题,您需要做的是: psuedo代码:
html="... from your post ...";
do{
newhtml=html
newhtml=replace(
'/<div class="quote-container">.*<div class="quote-block">.*</div>.*</div>/s',
'',
newhtml
)
} while(newhtml!=html)
html=newhtml
这将处理所有形式的嵌套引号。正则表达式是处理嵌套结构的糟糕选择。我会为这个问题编写一个特定的解析器,一个简单的基于堆栈的解析器就足够了。我不使用贪婪表达式。它们在我的程序选项中被禁用。我试过了,但你没发。不管怎么说,你的正则表达式肯定不会和贪婪一起工作。你说有问题,但不是问题是什么。您应该发布示例中所需的输出。将引号替换掉,直到不再有任何引号,也会吃掉post消息,因为它们位于引号之间。此外,我需要一个正则表达式,而不是那样的代码。无论如何,谢谢你。