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

标签 r regex

我想使用 regexgsub 替换字符串中的最后一个数字

S <- "abcd2efghi2.txt"

最后一个数字和最后一个数字的位置可以不同。

所以我尝试了正则表达式

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

但这似乎不起作用

感谢任何帮助。

最佳答案

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

\d+(\D*)$

替换为 \1 反向引用。

详细信息

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

请参阅regex demo .

R code demo :

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

关于使用正则表达式替换字符串中的最后一个数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45786809/

相关文章:

r - 根据时间间隔合并行值

r - 如何对实数进行采样?

重复矩阵中一行的值 N 次

javascript - 为什么 R Shiny 不接受 jQuery 设置的文本输入?

python - 在python中使用正则表达式从 anchor 标记中提取数据

正则表达式匹配以感叹号开头的整行

r - 在 ggplot 中绘制时间序列,线条按年份分组

javascript - 需要修改此正则表达式以不删除字符

c++ - 如何编写正则表达式以匹配以下数字格式?

javascript - 如何使用正则表达式获取字符串中的字母数字或数值?