R 仅当找到完全匹配项时才从字符串中删除链接
我有一些数据,我想删除包含R 仅当找到完全匹配项时才从字符串中删除链接,r,R,我有一些数据,我想删除包含https://someWebsiteLink.com。但是,我只想删除独立链接 我试过:str\u删除(链接,”https://someWebsiteLink.com“”删除所有https://someWebsiteLink.com。我还试图仅在字符数大于某个值时删除实例 sapply(strsplit(as.character(urls), "\\s+"), function(x){str_remove(x[nchar(x) >= 8],
https://someWebsiteLink.com
。但是,我只想删除独立链接
我试过:str\u删除(链接,”https://someWebsiteLink.com“”
删除所有https://someWebsiteLink.com
。我还试图仅在字符数大于某个值时删除实例
sapply(strsplit(as.character(urls), "\\s+"), function(x){str_remove(x[nchar(x) >= 8], "https://someWebsiteLink.com")})
这给了我同样的结果
预期产出:
"https://someWebsiteLink.com/companies/CompanyA"
""
"https://someWebsiteLink.com/companies/CompanyB"
""
数据:
links当您想要精确匹配整个字符串时,不要使用正则表达式。使用=
或%
中的%进行整个字符串的精确匹配
links[links == "https://someWebsiteLink.com"] <- ""
links
# [1] "https://someWebsiteLink.com/companies/CompanyA" ""
# [3] "https://someWebsiteLink.com/companies/CompanyB" ""
当您使用正则表达式的模式匹配功能和/或希望查看字符串内部,而不一定是整个字符串时,请使用正则表达式
您可以使用正则表达式通过使用^
和$
锚定字符串的开头和结尾:
str_replace(links, "^https://someWebsiteLink.com$", "")
# [1] "https://someWebsiteLink.com/companies/CompanyA" ""
# [3] "https://someWebsiteLink.com/companies/CompanyB" ""
但这比简单地使用上面的==
效率要低。但是,它更强大,因为您可以(例如)匹配该字符串,无论它是否以/
结尾(使用?
量词):
我设法找到了一些可行的解决办法。如果有人有一个“更好”的,不会产生警告信息,那就太好了
links2 <- sapply(strsplit(as.character(links), "\\s+"), function(x){x[nchar(x) < 8|x != "https://someWebsiteLink.com"]}) %>% str_c()
links3 <- lapply(links2, function(x) if(identical(x, "character(0)")) "" else x) %>% str_c()
除此警告消息外:
警告消息:在stri_c(…,sep=sep,collapse=collapse,
忽略(null=TRUE):参数不是原子向量;胁迫
尝试links[nchar(links)<8 | links!='https://someWebsiteLink.com']
谢谢!这几乎是我想要的。有没有办法让空的“'”链接保持在当前位置?这个解决方案删除了''''''空字符串。我想这会得到我想要的sapply(strsplit(作为.character(URL),“\\s+”),函数(x){x[nchar(x)<8|x!=”https://myWebsite.com“]})%%>%str_c()
然而,我得到一个警告参数不是原子向量;强制
-现在我想把所有的字符(0)
压缩为“
空字符。是的,你的解决方案比我的要优雅得多!再次感谢!我在网站链接的开头和结尾缺少^
和$
。
str_replace(links, "^https://someWebsiteLink.com$", "")
# [1] "https://someWebsiteLink.com/companies/CompanyA" ""
# [3] "https://someWebsiteLink.com/companies/CompanyB" ""
str_replace(links, "https://someWebsiteLink.com/?$", "")
# [1] "https://someWebsiteLink.com/companies/CompanyA" ""
# [3] "https://someWebsiteLink.com/companies/CompanyB" ""
links2 <- sapply(strsplit(as.character(links), "\\s+"), function(x){x[nchar(x) < 8|x != "https://someWebsiteLink.com"]}) %>% str_c()
links3 <- lapply(links2, function(x) if(identical(x, "character(0)")) "" else x) %>% str_c()
[1] "https://someWebsiteLink.com/companies/CompanyA" "" "https://someWebsiteLink.com/companies/CompanyB"
[4] ""