0

私はhtmlタグを含む文字列ベクトルを持っています。

  abc<-""welcome <span class=\"r\"><a href=\"abc\">abc</a></span> Have fun!""

これらのタグを削除して、次のベクトルを取得したい

例えば

       abc<-"welcome Have fun"
4

2 に答える 2

2

試す

> gsub("(<[^>]*>)","",abc)

これが言っているのは、「<のすべてのインスタンスと、それに続く>ではないものから>までのすべてのインスタンスを何も置き換えない」ということです

gsub("<.*>","",abc)正規表現は貪欲であり、.* はテキストの最後の > まで一致するため、できません (例では「abc」が失われます) 。

タグに > が含まれている場合、このソリューションは失敗する可能性がありますが、<foo class=">" >合法ですか? 間違いなく誰かが、重い XML パッケージで HTML を解析することを含む別の答えを思い付くでしょう。

于 2012-04-19T10:08:46.783 に答える
1

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)
于 2012-04-19T12:00:56.563 に答える