【问题标题】:Check if a string contains at least one numeric character in R [duplicate]检查字符串是否在R中包含至少一个数字字符[重复]
【发布时间】:2015-10-28 14:01:29
【问题描述】:

我尝试了以下方法,但是,当字符串包含任何其他字符(例如空格)时会出错。如下图所示,有一个叫“subway 10”的字符串,里面确实包含数字字符,但是因为有空格,报错了。

我的字符串可能包含任何其他字符,但如果它至少包含一个数字,我想从数组中获取这些字符串的索引。

> mywords<- c("harry","met","sally","subway 10","1800Movies","12345")
> numbers <- grepl("^[[:digit:]]+$", mywords) 
> letters <- grepl("^[[:alpha:]]+$", mywords) 
> both <- grepl("^[[:digit:][:alpha:]]+$", mywords) 
> 
> mywords[xor((letters | numbers), both)] # letters & numbers mixed 
[1] "1800Movies"

【问题讨论】:

  • 我可能遗漏了一些东西,但你为什么不使用"[[:digit:]]+"
  • 问题是你使用了锚^ & $;例如"^[[:digit:]]+$" 正在检查一个字符串是否包含 only 个数字。

标签: r regex


【解决方案1】:

使用\\d 对我有用:

grepl("\\d", mywords)
[1] FALSE FALSE FALSE  TRUE  TRUE  TRUE

[[:digit:]] 也是如此:

grepl("[[:digit:]]", mywords)
[1] FALSE FALSE FALSE  TRUE  TRUE  TRUE

正如@nrussel 提到的,您正在测试字符串是否仅包含字符串开头^ 到结尾$ 之间的数字。

您还可以检查字符串是否包含字母以外的其他内容,使用括号内的^ 来否定字母,但“其他内容”不仅仅是数字:

grepl("[^a-zA-Z]", mywords)
[1] FALSE FALSE FALSE  TRUE  TRUE  TRUE

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-20
    • 1970-01-01
    • 2012-03-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多