以4或6开头的10位数字

时间:2019-04-03 08:09:08

标签: r regex grep

在R中,我希望代码查找10位数字中以4或6开头的数字。

这可以获取10位数字:

Select * FROM (SELECT t1.id, t1.name, t2.date
FROM t1
LEFT JOIN t1 ON t1.id = t2.id
ORDER BY t2.date desc) a
GROUP BY a.id,a.name, t2.date

这不能使它们以4或6开头:

grep("^[[:digit:]]{10}$"

示例

grep([46]\"^[[:digit:]]{10}$"

3 个答案:

答案 0 :(得分:3)

您可以使用

grep("^[46][0-9]{9}$", x)
       ^^^^      ^

详细信息

  • ^-字符串的开头
  • [46]-46
  • [0-9]{9}-九位数字
  • $-字符串的结尾。

请参见regex demoRegulex graph

enter image description here

答案 1 :(得分:1)

您也可以使用简单的数学,即

x <- c('4982748923', '6165751984', '31094583285')

as.numeric(x) %/% 1000000000 %in% c(4, 6)
#[1]  TRUE  TRUE FALSE

答案 2 :(得分:1)

我们可以使用greplnchar

grepl("^[4|6]", x) & nchar(x) == 10
#[1]  TRUE  TRUE FALSE FALSE

使用grepl查找字符串是否以“ 4”或“ 6”开头,并检查其中的字符数是否等于10。

如果需要这些值,请将其子集

x[grepl("^[4|6]", x) & nchar(x) == 10]
#[1] "4982748923" "6165751984"

数据

x <- c('4982748923', '6165751984', '31094583285', '654')