我对包含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>
标记本身是一致的,不包含随机数量的空格。
谢谢!
答案 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>