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

Use gsub remove all string before first numeric character

在这个例子中,我们尝试用 sub(".*? (.+)", "\1", D$name) 删除 space 之前的所有内容。我正在寻找真正相似的东西,但我不太熟悉正则表达式。

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

例如:

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

我要:

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

您可以使用

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

或者,要确保有一个数字:

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

模式匹配

  • ^ - 字符串开头
  • \D+ - 数字
  • 以外的一个或多个字符
  • (\d) - 捕获组 1:一个数字(替换模式中的 </code> 恢复该组中捕获的数字)。</li> </ul> <p>以类似的方式,您可以实现以下目标:</p> <ul> <li><code>sub("^\s+", "", x) - 删除第一个非空白字符之前的所有文本
  • sub("^\W+", "", x) - 删除第一个单词 char
  • 之前的所有文本
  • sub("^[^-]+", "", x) - 删除第一个连字符(如果有的话)之前的所有文本,等等。

在 R 3.6(目前是 R devel 版本)之后 trimws 有一个新的 whitespace 参数可以用来指定什么被视为空白——在这种情况下任何非数字字符:

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