J'aimerais qu'il correspond à: mais non: p> ... p> p> p> P>
4 Réponses :
Utilisation des références du dos: Lire: Match n'importe quel caractère suivi de ce même caractère 0 ou plus de fois. P> Selon le moteur Regexp et vos besoins, vous peut vouloir ancrer la regex pour ne correspond à la chaîne entière, pas de substrings. p> p>
Essayer Java, mais system.out.println ("1111111" .matches ("(.) (\ 1) *")); imprime faux
@Julio: vous devez vous échapper à Java, c'est-à-dire une utilisation \\ 1 code> au lieu de \ 1 code>.
et quelle regex devrait être utilisée à des fins opposées? J'ai besoin de regex pour ne pas correspondre à des valeurs telles que "22222222" ou "Aaaaaaa"
En supposant que le moteur Regex prend en charge les références de retour,
theString.matches("(.)\\1*")
Essayer java, mais system.out.println ("1111111" .matches ("^ (.) \ 1 * $")); imprime faux.
@Julio: essayez "^ (.) \\ 1 * $" code>, avec 2 backslashes.
@Kenny: dans Java ^ code> et $ code> commençant et fin de ligne, pas de chaîne. Les correspondances Regex sont également ancrées par défaut. Alors juste "(.) \\ 1 *" va fonctionner.
@ SEPP2K: Par défaut, ^ code> et $ code> correspondent au début et à la fin de la chaîne, pas de ligne. Lorsque le drapeau (? M) CODE> est activé, ils correspondent au début et à la fin d'une ligne. Mais lorsque vous utilisez string.matches (...) code>, ^ code> et $ code> ne sont pas nécessaires: par défaut, correspond à des correspondances (.. .) code> correspondra à la chaîne d'entrée complète.
@Bart: the Javadocs pour le modèle disent" ^ le début d'une ligne "et" $ la fin d'une ligne "
@ Sepp2k, eh bien, alors le Javadoc est faux. Essayez-le vous-même: system.out.println ("a \ nb" .matches ("^ a $ \ nb $")); code> impressions false code>, tandis que System.out.println ("a \ nb" .matches ("(? M) ^ a $ \ nb $")); code> impression true code>.
@ Sepp2k, de la Javadoc également: "Par défaut, les expressions régulières ^ et $ ignorer les terminateurs de ligne et ne correspondent qu'au début et à la fin, respectivement, de toute la séquence d'entrée." I>
@Bart: Vous avez raison. Et oui, je viens de voir l'autre morceau dans les docs.
@ Sepp2k, il n'est jamais venu que ^ code> et $ code> est décrit comme vous venez de mentionner: plutôt déroutant de Sun, Err, Oracle! :)
Ajouter le backslash supplémentaire a fait fonctionner pour moi dans Python 3.x merci
et quelle regex devrait être utilisée à des fins opposées? J'ai besoin de regex pour ne pas correspondre à des valeurs telles que "22222222" ou "Aaaaaaa"
Si vous voulez capturer ce que vous faites correspondre, c'est ^ (((.) \ 2 *) $ code> p> p>
Juste pour avoir contribué à cette question, vous pouvez utiliser la bretelle: p>
(\ w +) \ s + \ 1 p>
Il vérifie les mots répétés séparés par WhitSpace. P>