私はhtmlタグを含む文字列ベクトルを持っています。
abc<-""welcome <span class=\"r\"><a href=\"abc\">abc</a></span> Have fun!""
これらのタグを削除して、次のベクトルを取得したい
例えば
abc<-"welcome Have fun"
私はhtmlタグを含む文字列ベクトルを持っています。
abc<-""welcome <span class=\"r\"><a href=\"abc\">abc</a></span> Have fun!""
これらのタグを削除して、次のベクトルを取得したい
例えば
abc<-"welcome Have fun"
試す
> gsub("(<[^>]*>)","",abc)
これが言っているのは、「<のすべてのインスタンスと、それに続く>ではないものから>までのすべてのインスタンスを何も置き換えない」ということです
gsub("<.*>","",abc)
正規表現は貪欲であり、.* はテキストの最後の > まで一致するため、できません (例では「abc」が失われます) 。
タグに > が含まれている場合、このソリューションは失敗する可能性がありますが、<foo class=">" >
合法ですか? 間違いなく誰かが、重い XML パッケージで HTML を解析することを含む別の答えを思い付くでしょう。
htmlParse
またはを使用して、HTML の一部を XML ドキュメントに変換できます
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)