0
votes

Comment faire correspondre une chaîne N chiffre dans laquelle un chiffre particulier si répété et s'il ne peut répéter que M fois?

J'ai une chaîne à 10 chiffres et la condition est un nombre quelconque s'il est répété de manière consécutive et ne peut être répété que 4 fois, sinon il n'y a pas de limitation de répétition

Exemple: P>

1234567890 "match"
1213141516 "match"
1111234567 "match"
1233333456 "not match"


3 commentaires

Expliquez à nouveau pourquoi la troisième ligne est une correspondance (4 celles) et le quatrième n'est pas (4 trois)?


C'est cinq 3, ce qui est plus de 4 donc il ne devrait pas correspondre


Ah, à droite. Compté le mal. Ma faute.


3 Réponses :


2
votes

Vous pouvez utiliser l'expression régulière suivante et renvoyer 'correspondant' code> ou 'no_match' code> selon que le groupe de capture a été trouvé ou non.

\ 1 code> spécifiera que vous voulez {4} code> répétitions du premier groupe de capture: p> xxx pré>


valid_string('1234567890')
# 'match'

valid_string('1111234567')
# 'match'

valid_string('1233333456')
# 'not_match'


3 commentaires

La solution ne contient pas la contrainte de 10 chiffres.


Est-ce une contrainte aussi? Mettra à jour la réponse. Notez toutefois que "J'ai une chaîne de 10 chiffres" ne semble pas être une contrainte pour moi


Mise à jour de la réponse @niladrichakrabarty. N'oubliez pas que vous pouvez upvote / accepter les réponses, voir Que dois-je faire quand quelqu'un répond à ma question? , merci!



0
votes

Y a-t-il une raison spécifique dont vous avez besoin pour le faire avec regex plutôt qu'une boucle simple contenant: xxx


1 commentaires

Dernièrement, j'apprends Regex et j'essaie divers problèmes comme celui-ci. Je suis d'accord, cela peut être facilement fait avec des boucles et des conditions.



0
votes

^ (?! \ d * (\ d) \ 1 {4}) \ d {10} $

Comme on le voit ici https://regex101.com/r/lx8zqs/1 < / p>


0 commentaires