1) gsubfn 使用 gsubfn 包中的gsubfn,这是一个只使用简单正则表达式的单行器。它将捕获组输入到指定的函数中(以公式表示法表示)并将匹配替换为函数的输出。
library(gsubfn)
gsubfn("; (.*)", ~ paste(";", gsub(" ", "", x)), test)
## [1] "ab cd ; efghij"
2) gsub 这使用了一种由空格组成的模式,该空格之前不紧跟分号,并且在字符串其余部分的任何地方都没有分号。
gsub("(?<!;) (?!.*; )", "", test, perl = TRUE)
## [1] "ab cd ; efghij"
3) regexpr/substring 这会找到分号的位置,然后使用substring 将其分成两部分并用gsub 替换空格,最后将其粘贴在一起。
ix <- regexpr(";", test)
paste(substring(test, 1, ix), gsub(" ", "", substring(test, ix + 2)))
## [1] "ab cd ; efghij"
4) read.table 这与 (3) 类似,但使用 read.table 将输入分成两个字段。
with(read.table(text = test, sep = ";", as.is = TRUE), paste0(V1, "; ", gsub(" ", "", V2)))
## [1] "ab cd ; efghij"