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]
我在一列中有一堆 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]