如何排除字母数字变量中的数字(有'/')

How to exclude numbers (which have '/') in alphanumeric variable

我正在纠结如何删除带有“/”的数字后的所有内容,例如,我有以下向量

x <-c("Rua 12 de outubro", "Outubro 1/900", "Rua A 4/2 outracoisa", "Rua a 2")

我想获得

x <-c("Rua 12 de outubro", "Outubro", "Rua A", "Rua a 2")

即排除带“/”的数字及其后的每个数字。

我尝试使用 gsub 但没有成功。我该怎么做?

假设字符串中只有一个“/”:

x <-c("Rua 12 de outubro", "Outubro 1/900", "Rua A 4/2 outracoisa", "Rua a 2")

sub("(.*) \d+/\d+.*", '\1', x)
#[1] "Rua 12 de outubro" "Outubro"           "Rua A"             "Rua a 2"        

使用sub进行替换并将字符串分成两个捕获组(...):一个在您要保留的/字符之前,一个在您想要保留的字符之后想丢弃。然后用 \1 返回第一个捕获组并用该组替换整个字符串:

sub("(.+)(/.+)", "\1", x)
[1] "Rua 12 de outubro" "Outubro 1"         "Rua A 4"           "Rua a 2"

或者,您可以通过否定字符 class [^/]+ 定义第一个捕获组,它允许任何字符出现一次或多次 除了 / 字符:

sub("([^/]+)(/.+)", "\1", x)