使用stringr和regex在URL中查找模式
我有一个带有一些URL的数据帧df。在我想用stringr和Stru-extract提取的URL中,斜杠中有一些子类别 我的数据看起来像使用stringr和regex在URL中查找模式,r,regex,extract,stringr,R,Regex,Extract,Stringr,我有一个带有一些URL的数据帧df。在我想用stringr和Stru-extract提取的URL中,斜杠中有一些子类别 我的数据看起来像 Text URL Hello www.facebook.com/group1/bla/exy/1234 Test www.facebook.com/group2/fssas/eda/1234 Text www.facebook.com/group-sdja/sdsds/adeds/23234 Tex
Text URL
Hello www.facebook.com/group1/bla/exy/1234
Test www.facebook.com/group2/fssas/eda/1234
Text www.facebook.com/group-sdja/sdsds/adeds/23234
Texter www.facebook.com/blablabla/sdksds/sdsad
现在我想提取.com/和下一个/
我尝试了
suburlpattern这将返回第一组正斜杠之间的所有内容
library(stringr)
str_match("www.facebook.com/blablabla/sdksds/sdsad", "^[^/]+/(.+?)/")[2]
[1] "blablabla"
如果要使用str\u extract
,则需要一个正则表达式,该正则表达式将在整个匹配中获得所需的值,并且需要一个(?)这样做有效
library(stringr)
data <- c("www.facebook.com/group1/bla/exy/1234",
"www.facebook.com/group2/fssas/eda/1234",
"www.facebook.com/group-sdja/sdsds/adeds/23234",
"www.facebook.com/blablabla/sdksds/sdsad")
suburlpattern <- "/(.*?)/"
categories <- str_extract(data, suburlpattern)
str_sub(categories, start = 2, end = -2)
库(stringr)
正则表达式模式中的数据^
意味着它只在字符串的开头匹配。由于.com
不在url的开头,因此您的模式将不匹配。您可能不需要^
。谢谢Amber,但不幸的是它仍然只给我NAs…还有其他想法吗?您可以将所有\/
替换为/
因为正斜杠不是特殊的正则表达式元字符。
> URL = c("www.facebook.com/group1/bla/exy/1234", "www.facebook.com/group2/fssas/eda/1234","www.facebook.com/group-sdja/sdsds/adeds/23234", "www.facebook.com/blablabla/sdksds/sdsad")
> df <- data.frame(URL)
> library(stringr)
> res <- str_extract(df$URL, "(?<=[.]com/)[^/]+")
> res
[1] "group1" "group2" "group-sdja" "blablabla"
library(stringr)
data <- c("www.facebook.com/group1/bla/exy/1234",
"www.facebook.com/group2/fssas/eda/1234",
"www.facebook.com/group-sdja/sdsds/adeds/23234",
"www.facebook.com/blablabla/sdksds/sdsad")
suburlpattern <- "/(.*?)/"
categories <- str_extract(data, suburlpattern)
str_sub(categories, start = 2, end = -2)