10-значные числа, начинающиеся с 4 или 6 - PullRequest
1 голос
/ 03 апреля 2019

В RI хотелось бы, чтобы код находил числа, начинающиеся с 4 или 6, в числах с 10 цифрами.

Это работает для получения 10-значных чисел:

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

Это не 'чтобы получить их начиная с 4 или 6:

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

Примеры

x <- c("4303669792", "6200406014")

Ответы [ 3 ]

3 голосов
/ 03 апреля 2019

Вы можете использовать

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

Детали

  • ^ - начало строки
  • [46] - 4 или 6
  • [0-9]{9} - девять цифр
  • $ - конец строки.

См. Демонстрационный пример regex и график Regulex :

enter image description here

1 голос
/ 03 апреля 2019

Мы можем использовать grepl и nchar

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')
1 голос
/ 03 апреля 2019

Вы также можете использовать простую математику, например

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

as.numeric(x) %/% 1000000000 %in% c(4, 6)
#[1]  TRUE  TRUE FALSE
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...