我正在与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,但它替换了同一个的所有标签。到目前为止,我无法找到解决方法...... :(
谢谢!
答案 0 :(得分:1)
了解XSLT。它是将XML转换为 - 还有什么 - 更多XML的语言。对于你正在做的事情来说,这有点过分,但只是略微过分。