我有一个像这样的字符串向量:
test <- c("A1.7","A1.8")
而且我想使用正则表达式在句点和数字之间插入A1c<=
,如下所示:
A1.A1c<=7 A1.A1c<=8
我浏览了一些问题,发现了@ zx8754类似的问题;我试图修改他们问题中发布的答案,但没有运气
insert <- 'A1c<='
n <- 4
old <- test
lhs <- paste0('([[:alpha:]][[:digit:]][[:punct:]]{', n-1, '})([[:digit:]]+)$')
rhs <- paste0('\\1', insert, '\\2')
gsub(lhs, rhs, test)
谁能指导我如何正确执行此操作?
您可以使用
insert <- 'A1c<='
test <- c("A1.7","A1.8")
sub("(?<=\\.)(?=\\d)", insert, test, perl=TRUE)
## => A1.A1c<=7 A1.A1c<=8
详细信息
(?<=\\.)
-与后面紧跟一个点的位置匹配的正向后看](?=\\d)
-与一个后跟一个数字的位置匹配的正向超前查询。