Solution by splitting url by $ and then extracting select and filter parts.
foo <- "http://services.odata.org/V4/(S(cscsmmmc110sj01dvwgyolkm))/TripPinServiceRW/People?$select=ID,CLASS,FIRST_NAME,LAST_NAME&$filter=FirstName eq 'Angel' or FirstName eq 'Clyde'"
bar <- unlist(strsplit(foo, "\\$"))
bar
[1] "http://services.odata.org/V4/(S(cscsmmmc110sj01dvwgyolkm))/TripPinServiceRW/People?"
[2] "select=ID,CLASS,FIRST_NAME,LAST_NAME&"
[3] "filter=FirstName eq 'Angel' or FirstName eq 'Clyde'"
resultSelect <- unlist(strsplit(gsub("select=|\\&$", "", grep("^select=", bar, value = TRUE)), ","))
resultFilter <- unlist(strsplit(gsub("filter=", "", grep("^filter=", bar, value = TRUE)), ","))
resultSelect
[1] "ID" "CLASS" "FIRST_NAME" "LAST_NAME"
resultFilter
[1] "FirstName eq 'Angel' or FirstName eq 'Clyde'"
Tidier example using pipes and custom function:
URL <- "http://services.odata.org/V4/(S(cscsmmmc110sj01dvwgyolkm))/TripPinServiceRW/People?$select=ID,CLASS,FIRST_NAME,LAST_NAME&$filter=FirstName eq 'Angel' or FirstName eq 'Clyde'"
queries <- c("select", "filter")
extractQ <- function(x, url = URL) {
library(magrittr)
strsplit(url, "\\$") %>%
unlist() %>%
grep(paste0("^", x, "="), ., value = TRUE) %>%
gsub(paste0(x, "=|\\&$"), "", .) %>%
strsplit(",") %>%
unlist()
}
sapply(queries, extractQ)
$select
[1] "ID" "CLASS" "FIRST_NAME" "LAST_NAME"
$filter
[1] "FirstName eq 'Angel' or FirstName eq 'Clyde'"