このhtml文字列からデータ項目をgrepする方法
a <- "<div class=\"tst-10\">100%</div>"
結果が100%になるように?主なアイデアは、><の間でデータを取得することです。
私はgsub()
この場合に使用します:
gsub("(<.*>)(.*)(<.*>)", "\\2", a)
[1] "100%"
基本的に、これは文字列を3つの部分に分割し、それぞれが通常の角かっこ(
とで区切られます)
。その後、これらを後方参照として使用できます。後方参照の最初のセットと一致するコンテンツは、\1
(特殊文字をエスケープするためにダブルスラッシュを使用して)、2番目のセットで一致するコンテンツなどと呼ばれることがあります\2
。
したがって、基本的には、この文字列を解析し、条件に一致するものを見つけて、2番目の後方参照のみを返すと言っています。
一つ一つ:
<.*>
「<」の後に任意の数の文字「。*」が続く場合は、「>」に到達するまで検索するように指示されます。.*
任意の数の文字に一致することを意味します(次の条件まで)これを念頭に置いて、実際に使用gsub("(.*>)(.*)(<.*)", "\\2", a)
して同じ結果を得ることができます。
私は常にこの正規表現を使用してHTMLタグを削除します。
gsub("<(.|\n)*?>","",a)
与える:
[1] "100%"
mrdwabとは異なり、すべてのhtmlタグを削除し、htmlタグ内からコンテンツを抽出します。これはおそらくこの例に適しています。タグが多い場合は、両方で異なる結果が得られることに注意してください。
> gsub("(<.*>)(.*)(<.*>)", "\\2", paste(a,"<lalala>foo</lalala>"))
[1] "foo"
> gsub("<(.|\n)*?>","", paste(a,"<lalala>foo</lalala>"))
[1] "100% foo"
一度ここSOで見つけたと思いますが、どちらの答えかわかりません。