R 在 = regex 之后提取所有内容

R extract everything after = regex

我在一列中有一堆 url,我需要创建一个新变量来为每个 url 提取特定的唯一 ID。唯一标识出现在等号之后。例如:

https://website.com/locationDetails.php?l=29A5CDCA-7D0F-4FAA-906C-00DA90EBFD13

因此唯一 ID 变量为:29A5CDCA-7D0F-4FAA-906C-00DA90EBFD13

我想我可以用 str_extract 使用正则表达式

data %>% 
  mutate(unique_id = str_extract(url, " ")) 

假设所有 URL 只会有 一个 查询参数,您可以在此处使用 sub

url <- "https://website.com/locationDetails.php?l=29A5CDCA-7D0F-4FAA-906C-00DA90EBFD13"
param <- sub("^.*=", "", url)
param

[1] "29A5CDCA-7D0F-4FAA-906C-00DA90EBFD13"

假设可能有多个查询参数,而您想要标记为 l 的参数,那么我们可以将 sub 与捕获组一起使用:

url <- "https://website.com/locationDetails.php?l=29A5CDCA-7D0F-4FAA-906C-00DA90EBFD13"
param <- sub("^.*\bl=(.*?)(?=&|$)", "\1", url, perl=TRUE)
param

[1] "29A5CDCA-7D0F-4FAA-906C-00DA90EBFD13"
  • 首先匹配所有内容 =,然后捕获所有内容。
str <- 'https://website.com/locationDetails.php?l=29A5CDCA-7D0F-4FAA-906C-00DA90EBFD13'

gsub('^[^\=]*\=(.*)$', '\1', str)
#> [1] "29A5CDCA-7D0F-4FAA-906C-00DA90EBFD13"

reprex package (v2.0.0)

创建于 2021-05-31

使用str_extract-

url <- 'https://website.com/locationDetails.php?l=29A5CDCA-7D0F-4FAA-906C-00DA90EBFD13'
stringr::str_extract(url, '(?<==).*')
#[1] "29A5CDCA-7D0F-4FAA-906C-00DA90EBFD13"

相同
stringr::str_match(url, '=(.*)')[, 2]