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}$"
3 Réponses :
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 >
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
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