Use gsub remove all string before first numeric character

人走茶凉 提交于 2020-11-28 07:42:25

问题


Use gsub remove all string before first white space in R

In this example, we try to remove everything before a space with sub(".*? (.+)", "\\1", D$name). I'm looking for something really similar but I'm not really familiar with regex.

I want to delete everything before the first numeric character but without remove it

For example with:

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

I want:

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

回答1:


You may use

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

Or, to make sure there is a digit:

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

The pattern matches

  • ^ - start of string
  • \\D+ - one or more chars other than digit
  • (\\d) - Capturing group 1: a digit (the \1 in the replacement pattern restores the digit captured in this group).

In a similar way, you may achieve the following:

  • sub("^\\s+", "", x) - remove all text up to the first non-whitespace char
  • sub("^\\W+", "", x) - remove all text up to the first word char
  • sub("^[^-]+", "", x) - remove all text up to the first hyphen (if there is any), etc.



回答2:


In R 3.6 (currently the R devel version) onwards trimws has a new whitespace argument which can be used to specify what is regarded as whitespace -- in this case any non-digit character:

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


来源:https://stackoverflow.com/questions/54311359/use-gsub-remove-all-string-before-first-numeric-character

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!