,
st <- "AbC + de + FGHIJ"
t1 <- gsub("([a-z])", "tt\\$\\U\\1==0", st, perl = TRUE)
t2 <- gsub("((?<!\\$)[A-Z])", "tt\\$\\U\\1==1", t1, perl = TRUE)
t3 <- gsub("([0-9])(tt)", "\\1 & \\2", t2)
t4 <- gsub(" + ", ") | (", t3, fixed = TRUE)
t5 <- paste("(", t4, ")", sep = "")
st
# "AbC + de + FGHIJ"
t5
# "(tt$A==1 & tt$B==0 & tt$C==1) | (tt$D==0 & tt$E==0) | (tt$F==1 & tt$G==1 & tt$H==1 & tt$I==1 & tt$J==1)"
, :
t1 tt$X==0, X - , . \\U\\1, \\U , \\1 . - , .
, ( , tt), , $. gsub , lookbehind (?<!), \\$ . .
, . - , tt$ , . , "tt", "", .
"+". ") | (". fixed = TRUE, OR.
, , .
, , : a) b) . , t4 , :
t4 <- gsub(" ?\\+ ?", ") | (", t3)
, , 0 1, + fixed = TRUE. fixed = TRUE, .
, , .
parse_string <- function(string, object_name) {
st <- string
t1 <- gsub("([a-z])", paste0(object_name, "\\$\\U\\1==0"), st, perl = TRUE)
t2 <- gsub("((?<!\\$)[A-Z])", paste0(object_name, "\\$\\U\\1==1"), t1, perl = TRUE)
t3 <- gsub(paste0("([0-9])(", object_name, ")"), "\\1 & \\2", t2)
t4 <- gsub(" ?\\+ ?", ") | (", t3)
t5 <- paste("(", t4, ")", sep = "")
return(t5)
}
> parse_string(st, "tt") == t5
> parse_string(st, "foo")
> parse_string("AbC+de+FGHIJ", "tt") == t5