我试图弄清楚如何创建一个正则向量,它将匹配向量中的任何值,然后重复第二个向量中的任何值。例如:
nums<-c("1","2","3","4")
syms<-c("+","-","*","\")
#program output
[1] "1" "2" "3" "4" "+" "-" "*" "/"
#does the output match values from nums,syms repeatedly?
例如
1+2 GOOD
1*2+3/4 GOOD
13+4 BAD (no symbol in between the numbers)
我尝试这种方法的原因是nums
的值会经常改变
答案 0 :(得分:1)
您可以使用以下正则表达式^(?:(?:1|2|3|4)[+\-*\/])+(?:1|2|3|4)$
每次更改时,都会将(?:1|2|3|4)
组替换为nums
。
如果有两位或更多位数的数字,我没有使nums
成为一个字符组。如果nums
只能包含1位数字,则可以使用[1234]
或任何值替换组。
答案 1 :(得分:0)
假设您的输入已经是一个名为input
的向量,这是一个公认的丑陋黑客nums<-c("1","2","3","4")
syms<-c("+","-","*","\\")
# set some stopping parameter and starting value
moveON <- TRUE
spot <- 1
while(moveOn) {
if(input[spot] %in% nums) spot <- spot +1
else stop(paste(input[spot], "is not a number")
# stop loop when input is finished
if(spot > length(input)) break
if(input[spot] %in% syms) spot <- spot +1
else stop(paste(input[spot], "is not a symbol")
# stop loop when input is finished
if(spot > length(input)) break
}
print("finished and all is well")