我有一个很长的字符串,包含了单词和字符的混合。
<h4> <a href="/forum?id=SyBPtQfAZ"> Improving Discriminator-Generator Balance in Generative Adversarial Networks </a> <a href="/pdf?id=SyBPtQfAZ" class="pdf-link" title="Download PDF" target="_blank"><img src="/static/images/pdf_icon_blue.svg"/></a> </h4>我只需要摘取标题:
Improving Discriminator-Generator Balance in Generative Adversarial Networks我知道R有能力在两个字符之间提取单词,例如:
sub(">.*<", "", my_string)但这显然是行不通的,因为有许多字符的混合。
发布于 2017-11-13 02:42:02
您可能应该在这里使用HTML解析器。话虽如此,使用gsub的下列一条班轮可能会工作:
gsub(".*?<a href=[^>]*>\\s*(.*?)\\s*</a>.*", "\\1", input)我说可能是因为我做了许多假设,包括标题锚标记是第一个,并且没有嵌套的内容。在实践中,您可以尝试使用HTML/XML解析器进行更大的控制。
Demo
发布于 2017-11-13 02:52:03
假设u是您获得此HTML的URL,则HTML解析解决方案可能如下所示:
library(rvest)
titles <- read_html(u) %>%
html_nodes("a[href^='/forum']") %>%
html_text() %>%
trimws()这假设标题的href以/forum开头,并使用trimws删除前导和尾随空格。
发布于 2017-11-13 02:54:41
You should not rely on regex for parsing HTML/XML --它非常脆弱,容易断裂。考虑使用rvest。您可以从任何源获取HTML和read_html()来解析它。html_text()只提取文本元素,trimws减少了经常存在于HTML中的多余空白。
library(rvest)
string = '<h4> <a href="/forum?id=SyBPtQfAZ"> Improving Discriminator-Generator Balance in Generative Adversarial Networks </a> <a href="/pdf?id=SyBPtQfAZ" class="pdf-link" title="Download PDF" target="_blank"><img src="/static/images/pdf_icon_blue.svg"/></a> </h4>'
read_html(string) %>%
html_text() %>%
trimws()https://stackoverflow.com/questions/47256275
复制相似问题