J'ai cherché un moment comment utiliser le fonctionnement logique et dans des expressions régulières en Java et ont échoué. et cela ne fonctionne pas. Même des exemples simples avec? = Retourne faux: p> aussi j'ai lu que ajouté:
Essayé d'ajouter
J'ai essayé de faire comme recommandé dans un sujet similaire: (expression x) (expression y) code> devrait fonctionner comme X et y code>, mais cela fonctionne comme x ou y code>.
Qu'est-ce que je fais mal? P> . * Code> à la fin. Toujours ne travaille pas.
Pour un exemple: p> [2-9]? [0-9] {5,9} || 1 [2-9] [0-9] {1,2} || 120 [0-9] {1,1} || 119 [0-9] Code> = x - Renvoie false si le numéro est inférieur à 1190 p> [0-9] { 1,3} || 1 [0-0] [0-9] {1,2} || 11 [0-8] [0-9] {1,1} || 119 [0-2] Code> = y - renvoyer false si le numéro est supérieur à 1992. P> String a = "1189";
a.matches(X) // return false
a.mathes(Y) // return true
a.matches((?=X)(?=Y).*) // return true, but should return false.
3 Réponses :
Qu'est-ce que vous faites mal, c'est que vous utilisez SO em> remplacez votre (? = code> correspondant code> mais votre regex ne correspond à rien. p>
(? = code> est un Large positive zéro look-avenir : Ne "consomme" pas de caractères, mais vérifie simplement que sa position est suivie de quelque chose qui correspond à son contenu. P>
correspondances () code> appelez avec correspondeur.Find () code> ou em> assurez-vous que vous avez quelque chose dans votre regex qui correspond à la chaîne entière (. * code> est un candidat commun). P>
Merci pour la réponse rapide. Mais ne travaille toujours pas. J'ai mis à jour le poste avec l'exemple.
Comme Joachim répondit, ajoutez un . * code> à la fin:
Je pense que ce dont vous avez besoin est Le problème principal: X et Y sont fausses, ils doivent être (supposer 4 chiffres): p> x: y: Voici un code de test: p> (? = x) y code>
(? = x) code> correspond à x, sans le consommer (largeur zéro) li>
y code> et correspond à y li>
ul> 119 [0-9] | 1 [2-9 ] [0-9] {2} | [2-9] [0-9] {3} code> p>
1 [0-8] [0-9] {2} | 19 [0-8] [0-9] | 199 [0-2] Code> < / p>
+1 pour l'analyse complète de la question mise à jour. J'étais trop paresseux pour ça ;-)
(expression x) (expression y) code> fonctionne comme "expression x puis expression y".Dupliqué possible de Expressions régulières: y a-t-il un opérateur?
Votre regex a tort: toutes les chaînes vides (parce que vous utilisez
|| code>) et le premier correspond à121 code>, par exemple. Re-cochez chaque partie de votre regex, s'il vous plaît.