1
votes

Numéros à 10 chiffres commençant par 4 ou 6

Dans RI, j'aimerais que le code trouve les nombres commençant par 4 ou 6 dans les nombres à 10 chiffres.

Cela fonctionne pour obtenir les nombres à 10 chiffres:

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

Cela ne fonctionne pas pour les faire commencer par 4 ou 6:

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

Exemples

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


0 commentaires

3 Réponses :


3
votes

Vous pouvez utiliser

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

Détails

  • ^ - début de chaîne
  • [46] - 4 ou 6
  • [0-9] {9} - neuf chiffres
  • $ - fin de chaîne.

Voir la démo regex et une Graphique Regulex : p >

 entrez la description de l'image ici


0 commentaires

1
votes

Vous pouvez également utiliser des mathématiques simples, c'est-à-dire

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

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


0 commentaires

1
votes

Nous pouvons utiliser grepl et nchar

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

Avec grepl trouver si la chaîne commence par "4 "ou" 6 "et vérifiez si le nombre de caractères qu'il contient est égal à 10.

Si vous avez besoin des valeurs, sous-définissez-le

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

données

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


0 commentaires