使用Regex删除多个标签

时间:2014-07-08 16:15:56

标签: java regex duplicate-removal

我正在与Regex挣扎。我收到的文字有多个我需要删除的标签,但我找不到合适的方法。

这是我的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,但它替换了同一个的所有标签。到目前为止,我无法找到解决方法...... :(

谢谢!

1 个答案:

答案 0 :(得分:1)

了解XSLT。它是将XML转换为 - 还有什么 - 更多XML的语言。对于你正在做的事情来说,这有点过分,但只是略微过分。