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

时间:2017-08-20 21:06:23

标签: r regex

我想使用regexgsub

替换字符串中的最后一个数字
S <- "abcd2efghi2.txt"

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

所以我试过了正则表达式

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

但这似乎无法运作

感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

您可以使用以下正则表达式使用默认TRE引擎实现此目的:

\d+(\D*)$

替换为\1反向引用。

<强>详情

  • \d+ - 一位或多位
  • (\D*) - 捕获第1组:任何0+非数字符号
  • $ - 字符串结尾
  • \1 - 对组1值的反向引用(以便恢复与(\D*)子模式匹配和使用的文本。)

请参阅regex demo

R code demo

sub("\\d+(\\D*)$", "\\1", S)
## => [1] "abcd2efghi.txt"

答案 1 :(得分:0)

您可以使用此正则表达式:

\d+(?=\D*$)

当后面的所有内容由非数字(\D)组成,直到字符串结尾($)时,它匹配一个数字序列。