正则表达式匹配范围从1到31

时间:2019-07-06 08:41:00

标签: r regex

我想从1到31匹配。我得到的最接近的是(1|2|3)?\d。但这可以匹配32到39之间的值。

是否可以在正则表达式中执行此操作?

2 个答案:

答案 0 :(得分:0)

请尝试这个(1 | 2)吗?\ d | 3(0 | 1)

答案 1 :(得分:0)

这是通过正则表达式执行此操作的一种方法:

^(?:[1-9]|[12][0-9]|3[01])$

Demo

您可以按如下方式将此模式与grepl一起使用:

x <- c("1", "10", "25", "31", "0", "32", "100")
grepl("\\b(?:[1-9]|[12][0-9]|3[01])\\b", x)

[1]  TRUE  TRUE  TRUE  TRUE FALSE FALSE FALSE

但是说实话,通常要做数字不等式比较通常是这里的方法:

x <- as.numeric(x)
x >= 1 & x <= 31

[1]  TRUE  TRUE  TRUE  TRUE FALSE FALSE FALSE