2011-06-27 46 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] 

无论是第一,第二或第三个是你想要的。我没有测试它,如果错了就玩一下。