Je travaille sur un exercice sur la référence en aval des regex comme celui demandé ici
La tâche est:
J'ai utilisé cette regex pour le résoudre. Mais il n'utilise pas de référence avant , donc je veux vraiment savoir comment cela peut être résolu en l'utilisant.
tactactictactictictac tactictac
Valide strong>:
tactactic tactactictactic
Non valide :
^tac(tac)+(tic(tac)+){0,}(tic)?$
Comment résoudre ce problème?
3 Réponses :
S'il doit y avoir au moins 2 tics dans la chaîne, vous pouvez utiliser une anticipation négative pour affirmer qu'il n'y a pas de tictique présent et commencer par faire correspondre et au moins 2 fois tic
^(?:(?:tac)+|(?!.*(tictic))(?:tac){2,}tic(?:t[ia]c)*)$
^ Début de chaîne (?: Groupe sans capture
(?: tac) + Répéter 1+ fois uniquement tac | Ou (?!. * (tictic)) Affirmer que ce qui est à droite ne contient pas de tactac (?: tac) {2,} (?: t [ia] c) * Répétez plus de 2 fois tac suivi de tic et répétez tic ou tac 0+ fois jusqu'à la fin du chaîne ) Fermer le groupe non capturant $ Fin de chaîne
Vous n'avez pas tout à fait compris le jeton gourmand tempéré mais pouvez-vous en montrer un impliquant également une référence avant ? Merci
Cette simple expression régulière devrait être assez bonne sans aucun regard autour de vous ni jeton gourmand tempéré car ils sont assez chers en termes de correspondance.
^tac(tac(?:tic)?)+$
Explication: p>
^ tac - Début de chaîne avec tac (tac (?: tic)?) + - Cela correspond à tac éventuellement suivi de tic en raison de laquelle il n'y a pas deux tic se produira jamais ensemble, et comme tic est facultatif ici, il permet donc de faire correspondre tac autant de fois que nécessaire pour correspondre au modèle. li >
$ - Fin de chaîne
tactactictactic ne devrait-il pas être valide?
Vous avez tous les deux raison. Pris soin des deux modèles. Vérifiez s'il vous plaît
Merci d'avoir répondu, mais pouvez-vous également accepter la référence avant (mais pas de manière redondante)
@ greeny1234: Je suis désolé mais je ne sais pas comment vous appelez renvoi de référence . Voulez-vous dire un regard positif sur l'avenir?
J'ai mis un lien dans la question
Ok, laisse-moi vérifier.
Ceci utilise une référence avant:
^(\2tic|(tac))+$
C'est en fait très similaire à l'exemple donné sur cette page .
Je vous remercie. J'ai essayé comment la référence avant pourrait être utilisée pour résoudre et c'est tout
Votre propre regex ne correspond pas aux chaînes avec plus de deux
tacau début, par exempletactactactic. Vous avez déjà votre réponse mais en cas de performance, vous devriez choisir une expression régulière plus légère:^ (tac) (\ 1 + tic) + \ 1 * $@revo C'est aussi une excellente solution, pourquoi ne pas la poster?
@Thefourthbird J'ai l'impression que cela ne répond pas à la question car OP demande explicitement une solution avec des références directes impliquées qui sont déjà données.
@revo Vous avez raison, je suppose que l'exercice n'a pas eu assez de cas. Et le vôtre fonctionne très bien aussi.