使用gsub删除R中第一个数字字符之前的所有字符串

时间:2019-01-22 15:20:23

标签: r string gsub

Use gsub remove all string before first white space in R

在此示例中,我们尝试使用sub(".*? (.+)", "\\1", D$name)删除空格之前的所有内容。我正在寻找真正相似的东西,但我对正则表达式并不十分熟悉。

我想删除第一个数字字符之前的所有内容,但不删除它

例如:

x <- c("lala65lolo","papa3hihi","george365meumeu")

我想要:

> "65lolo","3hihi", "365memeu"

感谢您的帮助。

2 个答案:

答案 0 :(得分:6)

从R 3.6(当前为R devel版本)开始,trimws具有一个新的whitespace参数,该参数可用于指定被视为空白的字符-在这种情况下,是任何非数字字符:

trimws(x, "left", "\\D")
## [1] "65lolo"    "3hihi"     "365meumeu"

答案 1 :(得分:1)

您可以使用

> x <- c("lala65lolo","papa3hihi","george365meumeu")
> sub("^\\D+", "", x)
[1] "65lolo"    "3hihi"     "365meumeu"

或者,确保有一个数字:

sub("^\\D+(\\d)", "\\1", x)

模式匹配

  • ^-字符串的开头
  • \\D+-除数字外的一个或多个字符
  • (\\d)-捕获第1组:一个数字(替换模式中的\1恢复在该组中捕获的数字)。

以类似的方式,您可以实现以下目标:

  • sub("^\\s+", "", x)-删除所有文本,直到第一个非空白字符
  • sub("^\\W+", "", x)-删除所有字符,直到第一个单词char
  • sub("^[^-]+", "", x)-删除所有文本,直到第一个连字符(如有)等。