155 votes

Regex exactement n OU m fois

Considérons l'expression régulière suivante, où X es tous regex.

X{n}|X{m}

Cette expression rationnelle vérifierait la présence des éléments suivants X se produisant exactement n o m fois.

Existe-t-il un quantificateur d'expressions rationnelles qui permette de tester la présence d'une occurrence X exactement n o m fois ?

0 votes

Non. Deux occurrences de X est ce qu'il y a de mieux pour les m , n .

1 votes

Si c'était mon problème, j'essaierais d'utiliser les références inverses des expressions rationnelles et je commencerais par (X)\1{n-1}(?:\1{m-n-1}) . Je sais que cela correspond X au moins une fois, mais pour commencer, essayez cette chose simple, puis affinez en utilisant des "lookaheads" ou des "lookbehinds" au lieu de "lookaheads". (X) .

1voto

rozza2058 Points 36

En examinant la réponse d'Enhardened, on constate que l'avant-dernière expression ne correspond pas aux séquences qui ne sont séparées que par un seul caractère. Il y a un moyen facile de résoudre ce problème sans utiliser look ahead/look behind, et c'est de remplacer le caractère de début/fin par le caractère de délimitation. Cela vous permet d'effectuer une recherche sur les limites d'un mot, ce qui inclut le début et la fin. Ainsi, l'expression appropriée devrait être :

(?:[^x]|\b)(x{n}|x{m})(?:[^x]|\b)

Comme vous pouvez le voir ici : https://regex101.com/r/oC5oJ4/2 .

-4voto

jackStinger Points 452

Vous pouvez également le coder en dur, (X{n})|(X{m})

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X