Connaissez-vous le terme Automates finis déterministes/non-déterministes ?
Real les expressions régulières (quand je dis real Je me réfère à ces regex qui reconnaissent Langues régulières et non pas les regex que presque tous les langages de programmation incluent avec des rétro-références, etc.) peut être converti en un DFA/NFA et les deux peuvent être implémentés de manière mécanique dans un langage de programmation (un NFA peut être converti en un DFA).
Ce que tu dois faire, c'est :
- Trouver un moyen de convertir une regex en un automate
- Implémentez la reconnaissance de l'automate dans le langage de programmation de votre choix.
Ainsi, à partir d'une expression rationnelle, vous pouvez la convertir en un DFA et l'exécuter pour voir si elle correspond ou non à un texte donné.
Cela peut être mis en œuvre dans O(n)
parce que les DFA ne reviennent pas en arrière (comme le ferait une carte de crédit). Machine de Turing ), pour qu'il corresponde ou non à la chaîne de caractères. Cela suppose que vous ne prenez pas en compte les correspondances qui se chevauchent, sinon vous devrez revenir en arrière et recommencer la correspondance...