【发布时间】:2017-11-16 12:10:42
【问题描述】:
我正在尝试找到正确的正则表达式来 grepl 天气一个包含数字 [0-9] 和特殊字符“-”的字符串。
例如,
str1="00-25" #TRUE
str2="0a-2" #FALSE
我试过了
grepl("[^[:digit:]|-]",str2)
#[1] TRUE
想法?
【问题讨论】:
-
grepl("^[0-9-]+$", str1) -
stringi或其包装器stringr这样的包使此类操作更容易 -
请注意,在字符类中使用
^会否定它。所以[^[:digit:]|-]告诉匹配任何不是数字的东西,-或|(字符类中的交替符号按字面意思解释)。 -
如果要使用
:digit:或其他类似关键字,请注意基本R 字符串函数通常需要双括号-[[:digit:]]。比较grepl("[:digit:]", "1"); grepl("[[:digit:]]", "1") -
谢谢!顺便问一下,+$ 是干什么用的?