Вот способ:
stmt <- "select * from t where x in (?)"
stmt_trimmed <- sub(" in \\(\\?\\)","", stmt) # [1] "select * from t where x"
tail(strsplit(stmt_trimmed," ")[[1]],1)
# [1] "x"
Я не знаю точно, что вы пытались сделать, но некоторые ошибки не ускользали от ?
и не забывали пробел после in
Re: как насчет этого: выберите * из t, где x in (?) И y in (?)
x <- "select * from t where x in (?) and y in (?)"
pattern <- " ([^ ]+) in \\(\\?\\)"
raw_matches <- regmatches(x,gregexpr(pattern,x))
clean_matches <- gsub(pattern,"\\1",raw_matches[[1]])
clean_matches
# [1] "x" "y"