regex 如果字符串超过5位,则从字符串中删除所有数字

5gfr0r5j  于 2023-03-31  发布在  其他
关注(0)|答案(5)|浏览(160)

我有包含数字的字符串,如果字符串中有超过5个数字,我想删除这些数字。
例如,将"string 58474847“修改为"string"。但保持"string 55"不变。数字也可以位于字符串的中间。

wnrlj8wa

wnrlj8wa1#

使用"{6,}"表示“大于5”:

x <- c("string 58474847", "string 55")

gsub("[0-9]{6,}", "", x)
# "string "   "string 55"

如果您还想像示例中那样删除前导空格:

gsub("\\s*[0-9]{6,}", "", x)
# "string"   "string 55"

正如@ChrisRuehlemann所指出的,这将删除每个字符串中所有6位以上的运行。如果你想只删除每个字符串的第一个运行,使用sub()

x2 <- "string 1234567 another string 9876543"
gsub("\\s*[0-9]{5,}", "", x2)
# "string another string"

sub("\\s*[0-9]{5,}", "", x2)
# "string another string 9876543"
kxeu7u2r

kxeu7u2r2#

library(stringr)    
str_remove(x, "\\s\\d{6,}")
gr8qqesn

gr8qqesn3#

可以使用stringr和函数str_count AND str_replace_all

library(stringr)
st=c("string 58474847","string 55")
st=ifelse(str_count(st,"\\d")>5,str_replace_all(st,"\\d",""),st)
st 
[1] "string "   "string 55"

更多详情请点击此处stringr package,备忘单请点击此处cheat sheet

3zwtqj6y

3zwtqj6y4#

你也可以通过计算字符串中的位数,然后替换超过5位的所有时间来实现

library(stringr)
#> Warning: package 'stringr' was built under R version 4.1.3
test <- c('string 234567', 'string 55', 'str45ing 3656', 'string34567', '5string55555')
test[str_count(test, '[0-9]') > 5] <- 'string'
test
#> [1] "string"      "string 55"   "string"      "string34567" "string"

reprex package(v2.0.1)于2023-03-28创建

pbgvytdp

pbgvytdp5#

我们可以像下面这样使用trimws

> trimws(c("string 58474847", "string 55"), whitespace = "\\s\\d{6,}")
[1] "string"    "string 55"

相关问题