从'<'中提取文字和'>'

时间:2016-04-28 05:10:09

标签: regex r

我在html文件中的span标记内有一些文本

我需要提取它,我到目前为止尝试了这个但它似乎不起作用:

HTML:

"<span id=\"MainContent_lblGenAssessment\">$866,250</span></dd>"

我试过了:

gsub(x = "<span id=\"MainContent_lblGenAssessment\">$866,250</span></dd>"r,pattern = ">(.*?)<",replacement = "\\1")

但它似乎无用,我如何提取866,250?

编辑:它必须使用默认的R库,我无法安装任何软件包。

2 个答案:

答案 0 :(得分:5)

正确的方法是使用解析器解析HTML,如下所示:

library(rvest)
x %>% read_html() %>% html_text()
# [1] "$866,250"

如果必须使用正则表达式进行操作(非常糟糕的主意,如果它是针对大量数据的话,或者很难检查结果,例如在程序设计中用法),你可以用:

sub('.*>([^<]+)<.*', '\\1', x)
# [1] "$866,250"

如果span标记位于更多HTML的中间,则您必须添加更多正则表达式以进行指定。

正则表达式寻找

  • 任何字符.重复0次或更多次*
  • 后跟>
  • 后跟一个捕获组( ... )
    • 包含[^ ... ]以外的任何字符
      • a <
    • 重复一次或多次+
  • 后跟<
  • 后跟任何字符.重复0次或更多次*

并将其替换为第一个捕获的组\\1

答案 1 :(得分:2)

试试这个:

([\d,]*)<\/span>

假设您要提取的每个号码都在<span>标记