gpt4 book ai didi

java - 使用正则表达式删除多个标签

转载 作者:行者123 更新时间:2023-12-01 12:46:42 25 4
gpt4 key购买 nike

我正在与正则表达式作斗争。我收到的文本包含多个需要删除的标签,但我找不到好的方法。

这是我的 JAVA 代码:(非常糟糕:P)

public static String DeleteExtras(String notes){    
String regexLazy = "(<a id=\".*?\" name=\".*?\" shape=\".*?\"></a>)+?";
String regexGreedy = "(<a id=\".*?\" name=\".*?\" shape=\".*?\"></a>)+";

Pattern pattern = Pattern.compile(regexGreedy);
Matcher matcher = pattern.matcher(notes);
String match = notas;
if (matcher.find()){
match = matcher.group();
Pattern p2 = Pattern.compile(regexLazy);
Matcher m2 = p2.matcher(notes);
if (m2.find()){
notes = notes.replace(match,m2.group());
}
}
}

这是我收到的文本的简化版本:

    <div class="tr_footnote">
<p class="footnote">
<a id="#(1)" name="#(1)" shape="rect"/>
<a id="(1)" name="(1)" shape="rect"/>
<a id="(1)" name="(1)" shape="rect"/>
<a id="(6)" name="(6)" shape="rect"/>
<a id="(8)" name="(8)" shape="rect"/>(1)</p>
</div>
<div class="tr_footnote">
<p class="footnote">
<a id="(2)" name="(2)" shape="rect"/>(2)</p>
</div>
<div class="tr_footnote">
<p class="footnote">
<a id="(7)" name="(7)" shape="rect"/>
<a id="(7)" name="(7)" shape="rect"/>(7)</p>
</div>
<div class="tr_footnote">
<p class="footnote">
<a id="(8)" name="(8)" shape="rect"/>(8)</p>
</div>

我知道我的代码无法正常工作...到目前为止,它所做的就是删除第一组重复标签,并且我将(标签)的第一个幽灵作为有效标签,因此我将其余的替换为第一个(标签)(这是第一个 div在示例文本中)。问题是它不适用于其他重复标签。我尝试使用 while( matcher.find() ) 而不是 if ,但它替换了同一标签的所有标签。到目前为止我找不到解决方法...:(

谢谢!

最佳答案

查看 XSLT。它是一种用于将 XML 转换为更多 XML 的语言。对于你正在做的事情来说,这有点矫枉过正,但也只是轻微而已。

关于java - 使用正则表达式删除多个标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24636791/

25 4 0