代码之家  ›  专栏  ›  技术社区  ›  CPak

使用正则表达式替换字符串中的最后一个数字

  •  2
  • CPak  · 技术社区  · 8 年前

    regex gsub

    S <- "abcd2efghi2.txt"
    

    最后一个数字和最后一个数字的位置可能会有所不同。

    所以我试过正则表达式

    ?<=[\d+])\b
    gsub("?<=[\d+])\b", "", S)
    

    但这似乎不起作用

    2 回复  |  直到 8 年前
        1
  •  2
  •   Wiktor Stribiżew    8 年前

    您可以使用以下正则表达式使用默认TRE引擎实现这一点:

    \d+(\D*)$
    

    \1 反向参考。

    细节

    • \d+ -1个或多个数字
    • (\D*) -捕获组1:任何0+非数字符号
    • $
    • -对组1值的反向引用(以便恢复与 子模式)。

    请参阅 regex demo

    R code demo

    sub("\\d+(\\D*)$", "\\1", S)
    ## => [1] "abcd2efghi.txt"
    
        2
  •  1
  •   trincot    8 年前

    你可以使用这个正则表达式:

    \d+(?=\D*$)

    \D )直到绳子的末端( $