【问题标题】:Replace every single character at the start of string that matches a regex pattern替换与正则表达式模式匹配的字符串开头的每个字符
【发布时间】:2017-11-30 13:45:30
【问题描述】:

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

mystring <- c("000450")

我想将所有单零匹配到第一个非零元素。我尝试了类似的东西

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

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

[1] "xxx450"

谁能帮帮我?

【问题讨论】:

    标签: r regex gsub


    【解决方案1】:

    你可以使用

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

    查看regex demoR demo

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

    详情

    • \G - 匹配(“断言”)字符串开头或成功匹配后的位置的锚
    • 0 - 0 字符。

    【讨论】:

    • 太好了,效果很好!为什么一定要设置perl = TRUE
    • @RudiSophieson \G 锚点是 not supported 默认 TRE 正则表达式 falvor。
    猜你喜欢
    • 1970-01-01
    • 2013-10-24
    • 1970-01-01
    • 1970-01-01
    • 2015-11-30
    • 2021-12-08
    • 2012-01-25
    • 2013-01-18
    • 1970-01-01
    相关资源
    最近更新 更多