Pas de programme d'ordinateur ne sera jamais en mesure de générer une véritable expression régulière basée uniquement sur une liste de bonnes correspondances. Laissez-moi vous montrer pourquoi.
Supposons que vous offrent les exemples 111111 et 999999, devrait à l'ordinateur de générer:
- Une regex qui correspondent exactement à ces deux exemples:
(111111|999999)
- Une expression régulière correspondant à 6 chiffres identiques
(\d)\1{5}
- Une expression régulière correspondant à 6 et les neuf,
[19]{6}
- Une expression régulière correspondant à 6 chiffres
\d{6}
- Aucun des trois ci-dessus, avec les limites de word, par exemple,
\b\d{6}\b
- De la première des trois, pas précédée ou suivie d'un chiffre, par exemple
(?<!\d)\d{6}(?!\d)
Comme vous pouvez le voir, il existe de nombreuses façons dans les exemples qui peuvent être généralisées à une expression régulière. La seule façon pour que l'ordinateur puisse construire un prévisible expression régulière est d'exiger de vous à la liste de toutes les correspondances possibles. Ensuite, il pourrait générer un modèle de recherche qui correspond exactement à ces matchs.
Si vous ne voulez pas faire la liste de tous les matchs possibles, vous avez besoin d'un plus haut niveau de description. C'est exactement ce que les expressions régulières sont conçues pour offrir. Au lieu de fournir une longue liste de 6 chiffres, il vous suffit de dire au programme de match "six chiffres". Dans la syntaxe d'expression régulière, cela devient \d{6}.
Toute méthode de fournir un niveau supérieur de la description qui est aussi souple comme des expressions régulières seront aussi complexe que les expressions régulières. Tous les outils comme RegexBuddy pouvez faire est de rendre plus facile pour créer et tester la description de haut niveau. Au lieu d'utiliser le laconique de la syntaxe d'expression régulière directement, RegexBuddy vous permet d'utiliser l'anglais de tous les blocs de construction. Mais il ne peut pas créer la description de haut niveau pour vous, car il ne peut pas magiquement de savoir quand il doit généraliser vos exemples et quand il ne devrait pas.
Il est certainement possible de créer un outil qui utilise le texte d'exemple avec les lignes directrices fournies par l'utilisateur à générer une expression régulière. La partie la plus difficile dans la conception d'un tel outil est comment fait-il demander à l'utilisateur pour le guider l'information dont il a besoin, sans en faire l'outil le plus difficile à apprendre que les expressions régulières, eux-mêmes, et sans restriction de l'outil de communes regex emplois ou à de simples expressions régulières.