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

Insert character string between period and digit in 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)

谁能指导我如何正确执行此操作?

您可以使用

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

online R demo

详情

  • (?<=\.) - 与紧接在前面的位置相匹配的正后视
  • (?=\d) - 匹配紧跟数字的位置的正前瞻。

sub 函数将仅替换第一个出现的地方,perl=TRUE 使得在模式中使用环视结构成为可能(因为它现在使用 PCRE 正则表达式引擎进行解析)。

另一种模式:

gsub("\.(\d+)", "\.A1c<=\1", test)  

    ## [1] "A1.A1c<=7" "A1.A1c<=8"

Regex Demo