2016-11-22 62 views
0

對於包含HTML標記的文本主體,我可以通過刪除特定標記並保留這些標記的內容來解決這個問題(基本上是將文本從層次結構中的某一層取出) )。使用正則表達式去除特定標記,同時保留內容

例如,我想:

<div> 
<div class="meta">Wednesday, 2 November 2016 at 15:52 UTC</div> 
<div class="comment">My life this weekend</div> 
<p></p> 
</div> 

要成爲:

<div> 
<div class="meta">Wednesday, 2 November 2016 at 15:52 UTC</div> 
My life this weekend 
<p></p> 
</div> 

我使用library(XML)解析標籤一旦被清洗,所以使用XML :: xpathSApply()是不是我在這裏需要的。

我相信解決方案在於某種正則表達式,它匹配包含兩個標記的單個模式,並忽略它們之間的文本並用「」直接替換。 Lookahead也是我所需要的,但我對於正則表達式很陌生,並且爲此付出了一些努力。

​​標籤本身是一致的,不包含隨機數量的空白。

謝謝!

+0

http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags – MichaelChirico

回答

2
text <- "<div> 
<div class=\"meta\">Wednesday, 2 November 2016 at 15:52 UTC</div> 
<div class=\"comment\">My life this weekend</div> 
<p></p> 
</div>" 

m <- gsub("<div class=\"comment\">(.*?)</div>", "\\1", text, perl = TRUE) 
cat(m) 

<div> 
<div class="meta">Wednesday, 2 November 2016 at 15:52 UTC</div> 
My life this weekend 
<p></p> 
</div> 
+0

是的,我認爲我的問題很好地工作。謝謝! –