我想使用 regex
和 gsub
替换字符串中的最后一个数字
S <- "abcd2efghi2.txt"
最后一个数字和最后一个数字的位置可以不同。
所以我尝试了正则表达式
?<=[\d+])\b
gsub("?<=[\d+])\b", "", S)
但这似乎不起作用
感谢任何帮助。
最佳答案
您可以使用以下正则表达式通过默认 TRE 引擎实现此目的:
\d+(\D*)$
替换为 \1
反向引用。
详细信息
\d+
- 1 位或更多数字(\D*)
- 捕获组 1:任何 0+ 个非数字符号$
- 字符串结尾\1
- 对第 1 组值的反向引用(以便恢复与(\D*)
子模式匹配和使用的文本)。
请参阅regex demo .
sub("\\d+(\\D*)$", "\\1", S)
## => [1] "abcd2efghi.txt"
关于使用正则表达式替换字符串中的最后一个数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45786809/