保留字符串后的第一个数字

bos*_*hek 5 regex r

这似乎应该很容易,但我无法弄清楚正则表达式匹配的哪个排列将导致在第一个数字提取整个字符串(如果是字符串).我可以在第一个数字之前提取字符串,如下所示:

gsub( "\\d.*$", "", "DitchMe5KeepMe" )
Run Code Online (Sandbox Code Playgroud)

任何想法如何编写正则表达式模式,以保持第一个数字后的字符串?

Wik*_*żew 4

我不依赖惰性点匹配,而是依赖\D非数字字符类并用于sub仅进行一次替换:

sub( "^\\D*\\d", "", "DitchMe5KeepMe" )
Run Code Online (Sandbox Code Playgroud)

这里,

  • ^- 匹配字符串的开头
  • \D*- 匹配零个或多个非数字
  • \d- 匹配一个数字

注意:要删除最多第一个数字,请+在最后一个数字后添加一个\d以匹配一个或多个数字。

请参阅IDEONE 演示