【发布时间】:2017-11-30 13:45:30
【问题描述】:
我想替换字符串中与特定模式匹配的每个字符。取以下字符串
mystring <- c("000450")
我想将所有单零匹配到第一个非零元素。我尝试了类似的东西
gsub("^0[^1-9]*", "x", mystring)
[1] "x450"
此表达式将所有前导零替换为单个 x。但相反,我想用xxx 替换所有三个前导零。首选结果是
[1] "xxx450"
谁能帮帮我?
【问题讨论】:
我想替换字符串中与特定模式匹配的每个字符。取以下字符串
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 和R demo
\\G0 正则表达式匹配字符串开头的 0,以及仅在成功匹配后出现的任何 0。
详情
\G - 匹配(“断言”)字符串开头或成功匹配后的位置的锚0 - 0 字符。【讨论】:
perl = TRUE?
\G 锚点是 not supported 默认 TRE 正则表达式 falvor。