2011-06-27 116 views
0

我有一個很大的HTML文件填充東西。REGEX - 去除東西周圍的東西?

某處在該文件中,有這樣

<span class="xcomponent">pls do not delete me</span> 

我需要擺脫的東西,但留下的是介於兩者之間的線路。

我正在使用Java,並且我假設正確的方法是正則表達式 - 我只是沒有足夠的正則表達式經驗來完成這一步。

如果有任何幫助,這是我的'在黑暗中刺'。

.*?(<span class="xcomponent">.*?</span>).*? 

回答

1

這是你想要什麼:

Pattern p = Pattern.compile("<span class="xcomponent">(.*?)</span>"); 
Matcher m = p.matcher(html); 
m.replaceAll("$1"); 
+0

謝謝。順便說一句,在這種情況下,$ 1意味着什麼? – guywhoneedsahand

+0

@guywhoneedsahand,'$ 1'匹配第一個捕獲組(在父項中)。用'(。*?)'匹配的東西' –

+0

好的。多謝你們! – guywhoneedsahand

0
myString.replaceAll("<span class=\"xcomponent\">(.*?)</span>", "$1") 
0

我寫的,從我的記憶中,所以會有一些msalle錯誤:

Pattern p = Pattern.compile(".*?(<span class="xcomponent">pls do not delete me</span>).*"); 
Matcher m = p.matcher(yourLine); 
if (matcher.matches()) { yourLine = matcher.group(1); } 

隨意移動支架在正則表達式中,如果你想擺脫它,並且只留下內部文本,則標記標籤。

0

我假定行看起來總是像

<Something>WHATYOU WANT</closeSomething> 

,你不關心的東西。比正則表達式看起來像:

<.*>.*</.*> 

使用這一行你只是使用匹配器來確保行包含上面的模式。 現在,你只需要使用分割法和分裂在每個<和>

string.split("<|>")[2] 

無論是第一,第二或第三個是你想要的。我沒有測試它,如果錯了就玩一下。