2016-11-22 3 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 тоже требуется, но я новичок в regex и немного борюсь с ним.

Сами теги <div class="comment"></div> согласуются и не содержат случайных количеств пробелов.

Спасибо!

+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

Да, я думаю, что работает для моей проблемы красиво. Благодаря! –

Смежные вопросы