Ma question est : jusqu'où pouvez-vous aller ?
Dans l'intérêt de ne pas créer un code qui soit une masse de ponctuation illisible, je vais risquer les votes négatifs et répondre à une question différente, bien que très liée : à quelle distance devrait Tu y vas ?
Les analyseurs d'expressions régulières sont une brillant Il s'agit d'un outil à posséder dans votre boîte à outils, mais il ne s'agit pas de la panacée en matière de programmation. La capacité d'écrire des analyseurs syntaxiques de manière lisible est un élément essentiel de la programmation. également une chose brillante à avoir dans sa boîte à outils.
Les expressions régulières doivent être utilisées jusqu'au moment où elles commencent à rendre votre code difficile à comprendre. Au-delà, leur valeur est au mieux douteuse, au pire dommageable. Dans ce cas précis, plutôt que d'utiliser quelque chose comme l'affreux :
~^(?=(a(?-1)?b)c)a+(b(?-1)?c)$~x
(avec les excuses de NikiC), que la grande majorité des personnes qui essaient de le maintenir vont devoir soit remplacer totalement, soit dépenser des euros. substantiel Après avoir lu et compris le texte, vous pourriez envisager une solution de type "analyseur approprié" (pseudo-code) non RE :
# Match "aa...abb...bcc...c" where:
# - same character count for each letter; and
# - character count is one or more.
def matchABC (string str):
# Init string index and character counts.
index = 0
dim count['a'..'c'] = 0
# Process each character in turn.
for ch in 'a'..'c':
# Count each character in the subsequence.
while index < len(str) and str[index] == ch:
count[ch]++
index++
# Failure conditions.
if index != len(str): return false # did not finish string.
if count['a'] < 1: return false # too few a characters.
if count['a'] != count['b']: return false # inequality a and b count.
if count['a'] != count['c']: return false # inequality a and c count.
# Otherwise, it was okay.
return true
Cela sera beaucoup plus facile à entretenir à l'avenir. J'aime toujours suggérer aux gens qu'ils devraient supposer que ceux qui viennent après eux (qui ont à maintenir le code qu'ils écrivent) sont des psychopathes qui savent où vous vivez - dans mon cas, c'est peut-être à moitié vrai, je n'ai aucune idée de l'endroit où vous vivez :-)
A moins que vous n'ayez un réel Si vous n'avez pas besoin d'expressions régulières de ce type (et il y a parfois de bonnes raisons, telles que les performances dans les langages interprétés), vous devriez optimiser pour lisibilité d'abord.