Découvrez la magie de la recherche programmatique d’expressions régulières ! Dans le monde du codage, les expressions régulières sont comme des codes secrets qui nous aident à trouver des informations spécifiques dans un texte. Cet article vous montrera comment effectuer une recherche par regex en C# pour rechercher intelligemment des documents de différents formats de fichiers.

API .NET pour la recherche Regex dans les documents par Regex

Pour la recherche Regex, nous utiliserons l’API GroupDocs.Search for .NET. Cela nous permet de rechercher du texte dans des fichiers de différents formats dans des dossiers simplement en fournissant le modèle regex. Cette bibliothèque nous permet de rechercher par programme du texte dans un large éventail de formats de fichiers, tels que des documents Word, des feuilles de calcul, des présentations, des fichiers PDF, des fichiers de balisage, des livres électroniques, des messages électroniques, des documents One Note et des archives ZIP.

Pour une liste détaillée des formats de fichiers pris en charge, reportez-vous à la documentation complète.

Vous avez la possibilité de récupérer les DLL ou le programme d’installation MSI à partir de la section téléchargements, ou d’installer l’API dans votre application .NET à l’aide de NuGet.

Comment rechercher dans des fichiers par Regex en utilisant C#

Suivez ces étapes pour effectuer une recherche d’expression régulière dans plusieurs fichiers de différents formats de fichiers dans des dossiers à l’aide de C# : Plus tard, vous pourrez facilement générer les fichiers de sortie HTML en surbrillance pour chaque document trouvé.

  • Créez un Index en fournissant un chemin de dossier.
  • Ajoutez le chemin du dossier parent du répertoire de recherche à l’index créé.
  • Définissez la requête de recherche regex.
  • Exécutez la recherche à l’aide de la méthode Search pour obtenir les résultats de la recherche.
  • Vous pouvez désormais parcourir SearchResults pour créer une sortie à votre guise.

L’expression régulière utilisée dans le code mentionné ci-dessous identifie tous les mots ayant des caractères répétés consécutifs comme ; ajouté, du bois, et voir. Le code C# suivant effectue la recherche rapide par regex dans plusieurs fichiers de différents formats de fichiers dans des dossiers.

// Rechercher par RegEx dans plusieurs fichiers dans plusieurs dossiers à l'aide de C#

// Créer un dossier d'index et y ajouter le dossier du document
Index index = new Index("indexing-folder-path");
index.Add("path/parent-folder");

// Préparer la requête et la recherche Regex
// Regex ici consiste à identifier tous les mots ayant des caractères répétés consécutifs.
string query = "^(.)\\1{1,}"; 
SearchResult result = index.Search(query);

Ici, j’ai mis en évidence les résultats de recherche d’expressions régulières du code ci-dessus :

Résultats mis en évidence de la recherche Regex au format HTML

Impression des résultats de recherche

Le code C# suivant propose deux manières de présenter vos résultats de recherche.

  1. Mettez en surbrillance tous les mots trouvés.
  2. Imprimez dans un format lisible et analysable
// Mise en surbrillance et impression des résultats de recherche Regex pour tous les documents
for (int i = 0; i < result.DocumentCount; i++)
{
    FoundDocument document = result.GetFoundDocument(i);

    OutputAdapter outputAdapter = new FileOutputAdapter(OutputFormat.Html, indexFolder + "/Highlight" + i + ".html");
    Highlighter highlighter = new DocumentHighlighter(outputAdapter); 
    index.Highlight(document, highlighter);

    Console.WriteLine("\tDocument: " + document.DocumentInfo.FilePath);
    Console.WriteLine("\tOccurrences: " + document.OccurrenceCount);
    for (int j = 0; j < document.FoundFields.Length; j++)
    {
        FoundDocumentField field = document.FoundFields[j];
        Console.WriteLine("\t\tField: " + field.FieldName);
        Console.WriteLine("\t\tOccurrences: " + document.OccurrenceCount);
        // Impression des termes trouvés
        if (field.Terms != null)
        {
            for (int k = 0; k < field.Terms.Length; k++)
            {
                Console.WriteLine("\t\t\t" + field.Terms[k].PadRight(20) + field.TermsOccurrences[k]);
            }
        }
    }
    Console.WriteLine("===========================================");
}
Document: English.txt
Occurrences: 83
	Field: content
	Occurrences: 82
		acceptance          1
		added               1
		agreeable           1
		agreed              1
		all                 4
		appearance          1
		assurance           1
...
===========================================
Document: Lorem ipsum.docx
	Occurrences: 945
...
Field: content
	Occurrences: 939
		accumsan            39
		class               7
		commodo             40
		convallis           38
		dignissim           35
		efficitur           46
		fringilla           40
		habitasse           2
		laoreet             27
		massa               63
		mattis              31
...

Obtenir une licence gratuite ou un essai gratuit

License gratuite

Obtenez gratuitement une licence temporaire pour explorer cette bibliothèque sans contraintes.

Essai gratuit

Vous pouvez télécharger l’essai gratuit depuis la section téléchargements.

API .NET pour la recherche dans les fichiers et dossiers

Conclusion

Dans cet article, nous avons examiné la magie de la recherche RegEx pour trouver tous les mots ayant un certain modèle dans divers documents texte tels que les fichiers DOCX, PDF et TXT dans plusieurs dossiers à l’aide de C#. Ensuite, nous avons présenté les résultats de la recherche en mettant en évidence les mots recherchés et en les imprimant dans un format lisible.

Pour des détails complets sur l’API, il est conseillé aux lecteurs de se référer à la documentation.

Toute demande de renseignements ou discussion supplémentaire peut être adressée au forum disponible.

Voir également