在 R 中,使用 stringr 从 [] 括号内的字符串中提取值

问题描述 投票:0回答:2
fetch_url = "https://www.website.com?splitArr=[43]&splitArrPitch=&position=P&statType=player&startDate=2023-03-28&endDate=2023-04-11&players=&filter=&groupBy=season"
start_date <- stringr::str_extract(fetch_url, "(?<=startDate=)[^&]+")
end_date <- stringr::str_extract(fetch_url, "(?<=endDate=)[^&]+")
stat_type <- stringr::str_extract(fetch_url, "(?<=statType=)[^&]+")
split_arr <- stringr::str_extract(fetch_url, "(?<=splitArr\\[)[^]]+")

我们成功地能够从这个字符串中提取出

start_date
end_date
stat_type
,但是我们正在努力获得
'43'
split_arr
。我们如何为此更新代码?

或者,对于 fetch_url,例如

https://www.website.com?splitArr=&splitArrPitch=&position=P&statType=player&startDate=2023-03-28&endDate=&players=&filter=&groupBy=season
作为第二个示例,这应该为
''
以及
split_arr
.
 返回一个空字符串 
end_date

我们已经接近前 3 个变量,但是 splitArr 周围的

[]
括号使这个变量更难获取。

r stringr
2个回答
0
投票

=
之前有一个
[
- 除了正则表达式环视,我们还可以捕获(
(...)
)并在
group

中指定捕获组
library(stringr)
str_extract(fetch_url, "splitArr=\\[(\\d+)", group = 1)
[1] "43"

0
投票

向前看和向后看。

regmatches(fetch_url, regexpr('(?<=\\[).*(?=\\])', fetch_url, perl=TRUE))
# [1] "43"
© www.soinside.com 2019 - 2024. All rights reserved.