使用stringr和regex在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

我有一个带有一些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
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)