使用正则表达式删除特定标记,同时保留内容

时间:2016-11-22 14:54:45

标签: r regex

我对包含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()不是我需要的。

我认为解决方案在于某种正则表达式,它匹配包含两个标记的单个模式,并忽略它们之间的文本并执行直接替换为&#34; &#34 ;.我相信也需要Lookahead,但我是regex的新手并且稍微努力了。

<div class="comment"></div>标记本身是一致的,不包含随机数量的空格。

谢谢!

1 个答案:

答案 0 :(得分: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>