Je travaille sur un modèle Regex pour les recherches qui devraient autoriser le signe '+' facultatif à inclure dans la recherche et le signe '-' à exclure de la recherche. Par exemple: + apple orange -peach devrait rechercher des pommes et des oranges et non des pêches. Aussi le modèle devrait permettre des phrases en guillemets mélangés avec des mots simples, par exemple: "pomme rouge" - "raisin noir" + orange - vous avez l'idée, même que la plupart des recherches sur Internet. Je suis en cours d'exécution 2 expressions régulières, d'abord de choisir tous les négatifs, ce qui est simple, car « - » est nécessaire:Motif Regex pour les recherches avec inclusion et exclusion
(?<=[\-]"?)((?<=")(?<exclude>[^"]+)|(?<exclude>[^\s,\+\-"]+))
Deuxièmement choisir positifs, et il est un peu plus complexe, car « + » est facultative:
((?<=[\+\s]")(?<include>[^\s"\+\-][^"]+))|(?<include>(?<![\-\w]"?)([\w][^,\s\-\+]+))(?<!")
recherche positive est là où j'ai un problème, il fonctionne très bien quand je le lance dans RegexBuddy mais lorsque je tente en .Net le modèle Excité deuxième mot de critères négatifs, par exemple - "raisin noir" il prend le mot "raisin" même si elle se termine par une double citation.
Des suggestions?
qui est vraiment pas un travail pour regex. Une simple recherche de chaîne ferait le travail et simplifierait tout. –
Je suis d'accord ici. Vous voulez tout avoir de la chaîne de toute façon, optez simplement pour un analyseur basé sur l'état très, très simple. Vous vous évitez un mal de tête et c'est probablement encore plus rapide. –
Je suis avec Max sur celui-ci, regex sont cool, mais ils ont leur place. Un analyseur de chaînes simple ou crawl serait beaucoup plus facile. – zellio