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

Kev*_*vin 0 regex r

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

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

HTML:

"<span id=\"MainContent_lblGenAssessment\">$866,250</span></dd>"
Run Code Online (Sandbox Code Playgroud)

我试过这个:

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

但它似乎没用,我怎样才能提取866,250?

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

ali*_*ire 5

正确的做到这一点的方法是用一个解析器来解析HTML,就像这样:

library(rvest)
x %>% read_html() %>% html_text()
# [1] "$866,250"
Run Code Online (Sandbox Code Playgroud)

如果你必须使用正则表达式(一个非常糟糕的主意,如果它是针对大量数据或者很难检查结果,例如在程序化使用中),你可以这样做:

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

如果该span标记位于更多HTML的中间,则必须添加更多正则表达式来指定.

正则表达式寻找

  • 任何.重复0次或更多次的人物*,
  • 其次是 >
  • 接下来是一个捕获组 ( ... )
    • 包含任何字符除外 [^ ... ]
      • 一个 <
    • 重复一次或多次 +
  • 其次是 <
  • 然后是.重复0次或更多次的任何字符*,

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