我有一个包含html标签的字符串向量,例如
abc<-""welcome <span class=\"r\"><a href=\"abc\">abc</a></span> Have fun!""
我想删除这些标签并获取以下向量
例如
abc<-"welcome Have fun"
答案 0 :(得分:1)
尝试
> gsub("(<[^>]*>)","",abc)
这说的是'替换&lt;的每个实例然后是任何不是&gt;达到&gt;什么都没有“
你不能只做gsub("<.*>","",abc)
,因为正则表达式是贪婪的,而。*会匹配到最后一个&gt;在你的文字中(你的例子中你会失去'abc')。
如果你有&gt;这个解决方案可能会失败在您的代码中 - 但<foo class=">" >
合法吗?毫无疑问,有人会想出另一个涉及使用重量级XML包解析HTML的答案。
答案 1 :(得分:1)
您可以将您的HTML文件转换为XML文档
htmlParse
或htmlTreeParse
。
然后,您可以将其转换为文本,
即,使用xmlValue
删除所有标记。
abc <- "welcome <span class=\"r\"><a href=\"abc\">abc</a></span> Have fun!"
library(XML)
#doc <- htmlParse(abc, asText=TRUE)
doc <- htmlTreeParse(abc, asText=TRUE)
xmlValue( xmlRoot(doc) )
如果您还想删除链接的内容,
您可以使用xmlDOMApply
转换XML树。
f <- function(x) if(xmlName(x) == "span") xmlTextNode(" ") else x
d <- xmlDOMApply( xmlRoot(doc), f )
xmlValue(d)