R 如果模式发生变化,则从字符串中提取子字符串
我想使用substr()从Web链接中提取名称。我的问题是模式略有不同,因此我不确定如何解释差异。以下是一个示例: 输入:R 如果模式发生变化,则从字符串中提取子字符串,r,regex,web-scraping,substring,stringr,R,Regex,Web Scraping,Substring,Stringr,我想使用substr()从Web链接中提取名称。我的问题是模式略有不同,因此我不确定如何解释差异。以下是一个示例: 输入: list <- c("https://www.gatcoin.io/wp-content/uploads/2017/08/GATCOIN-Whitepaper_ENG-1.pdf", "https://appcoins.io/pdf/appcoins_whitepaper.pdf", "https://pareto.network/download/Pareto-Te
list <- c("https://www.gatcoin.io/wp-content/uploads/2017/08/GATCOIN-Whitepaper_ENG-1.pdf",
"https://appcoins.io/pdf/appcoins_whitepaper.pdf",
"https://pareto.network/download/Pareto-Technical-White-Paper.pdf",
"http://betbox.ai/BetBoxBizWhitepaper.pdf",
"https://www.aidcoin.co/assets/documents/whitepaper.pdf")
据我所知,我需要指定要提取的字符串的开始和结束,但有时开始是“https://”,而有时是“https://”
我怎样才能解决这个问题
listlist您可以使用stringr
轻松做到这一点
list <- c("https://www.gatcoin.io/wp-content/uploads/2017/08/GATCOIN- Whitepaper_ENG-1.pdf",
"https://appcoins.io/pdf/appcoins_whitepaper.pdf",
"https://pareto.network/download/Pareto-Technical-White-Paper.pdf",
"http://betbox.ai/BetBoxBizWhitepaper.pdf",
"https://www.aidcoin.co/assets/documents/whitepaper.pdf")
pattern <- c("https://", "www.", "http://")
for(p in pattern) list <- gsub(p, "", list)
unlist(lapply(strsplit(list, "[.]"), function(x) x[1]))
[1] "gatcoin" "appcoins" "pareto" "betbox" "aidcoin"
library(stringr)
str_match(list, "\\/(www\\.)*(\\w+)\\.")[,3]
[1] "gatcoin" "appcoins" "pareto" "betbox" "aidcoin"
正则表达式提取斜杠和可选的www.
,以及下一个点之间的第一个字母序列
底端R中的等效物稍微混乱
sub(".+?\\/(?:www\\.)*(\\w+)\\..+", "\\1", list)
这也会添加字符串的开头和结尾,将整个批次替换为您想要的捕获组。它将可选的www.
设置为非捕获组,因为sub
和stru match
在未找到第一个组时表现不同。您可以使用stringr
轻松做到这一点
library(stringr)
str_match(list, "\\/(www\\.)*(\\w+)\\.")[,3]
[1] "gatcoin" "appcoins" "pareto" "betbox" "aidcoin"
正则表达式提取斜杠和可选的www.
,以及下一个点之间的第一个字母序列
底端R中的等效物稍微混乱
sub(".+?\\/(?:www\\.)*(\\w+)\\..+", "\\1", list)
这也会添加字符串的开头和结尾,将整个批次替换为您想要的捕获组。它将可选的www.
设置为非捕获组,因为sub
和stru match
在未找到第一个组时表现不同。此正则表达式捕获:/(www.)之后的单词。
此正则表达式捕获://(www.)
后面的单词
你可以用。然而,这是重新发明轮子。人们以前考虑过如何拆分URL,以便使用现有的函数
例如,解析httr包的url。或谷歌“R解析URL”的替代方案
urls <- list("https://www.gatcoin.io/wp-content/uploads/2017/08/GATCOIN-Whitepaper_ENG-1.pdf",
"https://appcoins.io/pdf/appcoins_whitepaper.pdf",
"https://pareto.network/download/Pareto-Technical-White-Paper.pdf",
"http://betbox.ai/BetBoxBizWhitepaper.pdf",
"https://www.aidcoin.co/assets/documents/whitepaper.pdf")
现在您有了一个列表列表。解析的列表的每个元素本身都有多个元素,这些元素包含URL`的部分
提取所有元素解析[…]]$hostname
:
hostname <- sapply(parsed, function(e) e$hostname)
hostname您可以使用。然而,这是重新发明轮子。人们以前考虑过如何拆分URL,以便使用现有的函数
例如,解析httr包的url。或谷歌“R解析URL”的替代方案
urls <- list("https://www.gatcoin.io/wp-content/uploads/2017/08/GATCOIN-Whitepaper_ENG-1.pdf",
"https://appcoins.io/pdf/appcoins_whitepaper.pdf",
"https://pareto.network/download/Pareto-Technical-White-Paper.pdf",
"http://betbox.ai/BetBoxBizWhitepaper.pdf",
"https://www.aidcoin.co/assets/documents/whitepaper.pdf")
现在您有了一个列表列表。解析的列表的每个元素本身都有多个元素,这些元素包含URL`的部分
提取所有元素解析[…]]$hostname
:
hostname <- sapply(parsed, function(e) e$hostname)
hostname@smci你怎么知道OP知道regex…?@akraf:我以为OP给这个regex加了标签,要求别人写一个regex。但不管怎样,尝试使用substr、strsplit或其他任何东西的代码在哪里?因此,需要用户进行尝试,并且通常会显示一些尝试过的代码相关帖子:@smic:这是一种令人鼓舞的方式,可以回应刚刚开始学习编码语言的用户。而且,不是很有帮助;-)。我不知道regrex,如果这能回答你的疑问的话;suffix_extract(domain(url))$domain
其中url
是链接向量。@smci你怎么知道OP知道regex…?@akraf:我以为OP标记了这个regex,并要求别人写一个regex。但不管怎样,尝试使用substr、strsplit或其他任何东西的代码在哪里?因此,需要用户进行尝试,并且通常会显示一些尝试过的代码相关帖子:@smic:这是一种令人鼓舞的方式,可以回应刚刚开始学习编码语言的用户。而且,不是很有帮助;-)。我不知道regrex,如果这能回答你的疑问的话;后缀提取(域(URL))$domain
其中URL
是链接的向量。