使用 r 正则表达式在第一个数字后删除字符串

NBK*_*NBK 4 regex r

如何删除字符串的第一个数字之后包含的所有内容?

x <- c("Hubert 208 apt 1", "Mass Av 300, block 3")
Run Code Online (Sandbox Code Playgroud)

这个问题之后,我成功地删除了第一个数字之前的所有内容,包括第一个数字:

gsub( "^\\D*\\d+", "", x )
[1] " apt 1"    ", block 3"
Run Code Online (Sandbox Code Playgroud)

但所需的输出如下所示:

[1] "Hubert 208"     "Mass Av 300"
> 
Run Code Online (Sandbox Code Playgroud)

akr*_*run 5

在 OP 的当前代码中,稍作更改即可使其工作,即将匹配模式捕获为一个组 ( (...)) 并替换为反向引用 ( \\1)

sub("^(\\D*\\d+).*", "\\1", x)
#[1] "Hubert 208"  "Mass Av 300"
Run Code Online (Sandbox Code Playgroud)

在这里,来自 OP 的模式意味着 ( "^\\D*\\d+") - 零个或多个不是\\D*来自^字符串开头 ( ) 的数字 ( )的字符,后跟一个或多个数字 ( \\d+) 并且这被捕获为带有括号 ( (...))的组。

此外,gsub我们不需要(全局替换),sub因为我们只需要匹配一个实例(从一开始)