Gsub 识别第一个空格之前的字符串,只有数字

Gsub to identify string before first whitespace, only numbers

正如标题所说,

这是一些数据

DF<- data.frame(StreetName=c("PO BOX 850", "555 Happy Lane"))

这是我的代码

DF$StreetName <- sub(".*? (.+)", "\1", DF$StreetName)

我也试过了

DF$StreetName<- sub("\d? (.+)", "\1", DF$StreetName)

但两者都在扼杀我的 PO BOX addys。

我需要的是

   StreetName
    PO BOX 850
    Happy Lane

能否请您尝试以下。

val1 <- c("PO BOX 850", "555 Happy Lane")
val1
sub("^[0-9]+[[:space:]]+","",val1)

输出如下。

[1] "PO BOX 850" "Happy Lane"

作为一个例子,这被实现为一个向量,您也可以将它用于数据框的值。

我建议使用

sub("^\d+\s*", "", DF$StreetName)

模式匹配

  • ^ - 字符串开头
  • \d+ - 1 个或多个数字
  • \s* - 零个或多个空格。

请注意,如果您只想匹配数字和至少 1 个空格,则需要将 * 替换为 +

参见regex demo

> DF<- data.frame(StreetName=c("PO BOX 850", "555 Happy Lane"))
> sub("^\d+\s*", "", DF$StreetName)
[1] "PO BOX 850" "Happy Lane"