在 R 中的句点和数字之间插入字符串



我有一个字符串向量,如下所示:

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)

谁能指导我如何正确执行它?

另一种模式:

gsub("\.(\d+)", "\.A1c<=\1", test)  
## [1] "A1.A1c<=7" "A1.A1c<=8"

正则表达式演示

您可以使用

insert <- 'A1c<='
test <- c("A1.7","A1.8")
sub("(?<=\.)(?=\d)", insert, test, perl=TRUE)
## => A1.A1c<=7 A1.A1c<=8

查看在线 R 演示

  • (?<=\.)- 与紧靠点的位置匹配的正面回溯
  • (?=\d)- 与紧跟数字的位置匹配的正面展望。

sub函数将仅替换第一次出现,并且perl=TRUE使得可以在模式中使用环顾构造(因为它现在使用 PCRE 正则表达式引擎解析(。

最新更新