Je développe un petit mécanisme de recherche simple et je veux permettre à l'utilisateur de rechercher des morceaux de texte avec des espaces. Par exemple, un utilisateur peut rechercher le nom d'une personne:C# Analyser le texte dans les citations
Nom: John Smith
Je puis "John Smith".Split(' ')
dans un tableau de deux éléments, {"John","Smith"}
. Je retourne ensuite tous les enregistrements qui correspondent "John" ET "Smith" en premier suivi par les enregistrements qui correspondent soit "John" OR "Smith."
Je retourne ensuite aucun enregistrement pour aucune correspondance. Ce n'est pas un scénario compliqué et j'ai cette partie qui fonctionne.
Je voudrais maintenant être en mesure de permettre à l'utilisateur de retourner uniquement les enregistrements qui correspondent à « John Smith »
Je voudrais utiliser une syntaxe de devis de base pour la recherche. Donc, si un utilisateur veut rechercher "John Smith" OU Pocahontas, ils entreront: "John Smith" Pocahontas. L'ordre des termes est absolument hors de propos; "John Smith" n'a pas la priorité sur Pocahontas parce qu'il vient en premier dans la liste.
J'ai deux idées principales sur la façon dont je devrais analyser l'entrée. Je pense qu'un point d'action logique serait de trouver la substance entre guillemets; puis supprimez-le de la chaîne d'origine et insérez-le dans une liste distincte. Ensuite, tout ce qui reste de la chaîne d'origine pourrait être divisé sur l'espace et inséré dans cette liste séparée. S'il y a 1 citation ou un nombre impair, il est simplement retiré de la liste.
Comment puis-je trouver les correspondances de l'intérieur de regex? Je connais regex.Replace, mais comment je passerais à travers les matches et les insérer dans une liste. Je sais qu'il y a une bonne façon de le faire en utilisant le délégué de MatchEvaluator et linq, mais je ne sais rien sur regex dans C#.
double possible de [expression régulière pour diviser sur des espaces moins entre guillemets] (http://stackoverflow.com/questions/554013/regular-expression-to-split-on-spaces-unless-in-quotes – Lucero