在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
详情
(?<=\.)
- 与紧接在前面的位置相匹配的正后视
(?=\d)
- 匹配紧跟数字的位置的正前瞻。
sub
函数将仅替换第一个出现的地方,perl=TRUE
使得在模式中使用环视结构成为可能(因为它现在使用 PCRE 正则表达式引擎进行解析)。
另一种模式:
gsub("\.(\d+)", "\.A1c<=\1", test)
## [1] "A1.A1c<=7" "A1.A1c<=8"
我有一个字符串向量,如下所示:
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)
- 匹配紧跟数字的位置的正前瞻。
sub
函数将仅替换第一个出现的地方,perl=TRUE
使得在模式中使用环视结构成为可能(因为它现在使用 PCRE 正则表达式引擎进行解析)。
另一种模式:
gsub("\.(\d+)", "\.A1c<=\1", test)
## [1] "A1.A1c<=7" "A1.A1c<=8"