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

时间:2022-05-11 10:24:43

I want to replace the last number in a string using regex and gsub

我想用regex和gsub替换字符串中的最后一个数字

S <- "abcd2efghi2.txt"

The last number and the position of the last number can vary.

最后一个号码和最后一个号码的位置可以变化。

So I've tried the regex

所以我试过了正则表达式

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

but that doesn't seem to work

但这似乎不起作用

Appreciate any help.

感谢任何帮助。

2 个解决方案

#1


2  

You can achieve that with a default TRE engine using the following regex:

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

\d+(\D*)$

Replace with the \1 backreference.

替换为\ 1反向引用。

Details

  • \d+ - 1 or more digits
  • \ d + - 1位或更多位数

  • (\D*) - Capturing group 1: any 0+ non-digit symbols
  • (\ D *) - 捕获组1:任何0+非数字符号

  • $ - end of string
  • $ - 结束字符串

  • \1 - a backreference to the Group 1 value (so as to restore the text matched and consumed with the (\D*) subpattern).
  • \ 1 - 对组1值的反向引用(以便恢复与(\ D *)子模式匹配和使用的文本)。

See the regex demo.

请参阅正则表达式演示。

R code demo:

R代码演示:

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

#2


0  

You could use this regex:

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

\d+(?=\D*$)

It matches a sequence of digits when everything that follows consists of non-digits (\D) until the end of the string ($).

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

#1


2  

You can achieve that with a default TRE engine using the following regex:

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

\d+(\D*)$

Replace with the \1 backreference.

替换为\ 1反向引用。

Details

  • \d+ - 1 or more digits
  • \ d + - 1位或更多位数

  • (\D*) - Capturing group 1: any 0+ non-digit symbols
  • (\ D *) - 捕获组1:任何0+非数字符号

  • $ - end of string
  • $ - 结束字符串

  • \1 - a backreference to the Group 1 value (so as to restore the text matched and consumed with the (\D*) subpattern).
  • \ 1 - 对组1值的反向引用(以便恢复与(\ D *)子模式匹配和使用的文本)。

See the regex demo.

请参阅正则表达式演示。

R code demo:

R代码演示:

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

#2


0  

You could use this regex:

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

\d+(?=\D*$)

It matches a sequence of digits when everything that follows consists of non-digits (\D) until the end of the string ($).

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