2014-07-08 91 views
0

我正在努力與正則表達式。我收到了一個文本,其中包含需要刪除的多個標籤,但我找不到這樣做的好方法。使用正則表達式刪除多個標記

這是我的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

這是一個解析器的工作... – hwnd

+1

omg什麼時候會這樣結束。不要使用正則表達式來處理html解析。 –

回答

1

查找到XSLT這是用於轉換XML的語言 - !還有什麼 - 更多XML它是略有矯枉過正你正在做什麼,但只是稍微。

相關問題