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 周围的
[]
括号使这个变量更难获取。
在
=
之前有一个[
- 除了正则表达式环视,我们还可以捕获((...)
)并在group
中指定捕获组
library(stringr)
str_extract(fetch_url, "splitArr=\\[(\\d+)", group = 1)
[1] "43"
向前看和向后看。
regmatches(fetch_url, regexpr('(?<=\\[).*(?=\\])', fetch_url, perl=TRUE))
# [1] "43"