替换字符串开头与正则表达式模式匹配的每个字符

Replace every single character at the start of string that matches a regex pattern

我想替换字符串中与特定模式匹配的每个字符。取下面的字符串

mystring <- c("000450")

我想将所有单零匹配到第一个非零元素。我试过类似

gsub("^0[^1-9]*", "x", mystring)
[1] "x450"

此表达式将所有前导零替换为单个 x。但是,我想用 xxx 替换所有三个前导零。首选结果是

[1] "xxx450"

谁能帮帮我?

您可以使用

mystring <- c("000450")
gsub("\G0", "x", mystring, perl=TRUE)
## => [1] "xxx450"

regex demo and an R demo

\G0 正则表达式匹配字符串开头的 0,以及仅在成功匹配后出现的任何 0

详情

  • \G - 匹配 ("asserts") 字符串开头或成功匹配后的位置的锚点
  • 0 - 一个 0 字符。