Scopri la magia della ricerca regex programmatica! Nel mondo della programmazione, le espressioni regolari sono come codici segreti che ci aiutano a trovare informazioni specifiche nel testo. Questo articolo ti mostrerà come eseguire la ricerca tramite regex in C# per cercare in modo intelligente documenti di vari formati di file.

API .NET per la ricerca Regex nei documenti tramite Regex

Per la ricerca Regex, utilizzeremo l’API GroupDocs.Search for .NET. Ciò ci consente di cercare testo all’interno di file di vari formati tra cartelle semplicemente fornendo il modello regex. Questa libreria ci consente di cercare a livello di codice testo in un’ampia gamma di formati di file, come documenti Word, fogli di calcolo, presentazioni, file PDF, file Markup, eBook, messaggi e-mail, documenti One Note e archivi ZIP.

Per un elenco approfondito dei formati di file supportati, fare riferimento alla documentazione completa.

Hai la possibilità di acquisire le DLL o il programma di installazione MSI dalla sezione download oppure puoi installare l’API nell’applicazione .NET utilizzando NuGet.

Come cercare nei file tramite Regex utilizzando C#

Segui questi passaggi per eseguire una ricerca regex in più file di vari formati di file all’interno di cartelle utilizzando C#: Successivamente puoi generare facilmente i file di output HTML evidenziati per ciascun documento trovato.

  • Crea un Indice fornendo un percorso di cartella.
  • Aggiungi il percorso della cartella principale per la directory di ricerca all’indice creato.
  • Definire la query di ricerca regex.
  • Eseguire la ricerca utilizzando il metodo Cerca per ottenere i risultati della ricerca.
  • Ora puoi scorrere su SearchResults per creare un output come preferisci.

La regex utilizzata nel codice indicato di seguito identifica tutte le parole aventi caratteri ripetuti consecutivi come; aggiunto, legno, e vedi. Il codice C# seguente esegue la ricerca rapida tramite regex in più file di formati di file diversi nelle cartelle.

// Cerca per RegEx in più file in più cartelle utilizzando C#

// Creare una cartella indice e aggiungervi la cartella del documento
Index index = new Index("indexing-folder-path");
index.Add("path/parent-folder");

// Preparare la query e la ricerca Regex
// Regex qui serve per identificare tutte le parole che hanno caratteri ripetuti consecutivi.
string query = "^(.)\\1{1,}"; 
SearchResult result = index.Search(query);

Qui ho evidenziato i risultati della ricerca regex del codice sopra:

Risultati evidenziati della ricerca Regex in formato HTML

Stampa dei risultati della ricerca

Il codice C# seguente fornisce due modi per presentare i risultati della ricerca.

  1. Evidenzia tutte le parole trovate.
  2. Stampa in un formato leggibile e analizzabile
// Evidenziazione e stampa dei risultati della ricerca Regex per tutti i documenti
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);
        // Stampa dei termini trovati
        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
...

Ottenere una licenza gratuita o una prova gratuita

Licenza gratuita

Ottieni una licenza temporanea gratuitamente per esplorare questa libreria senza vincoli.

Prova gratuita

Puoi scaricare la versione di prova gratuita dalla sezione download.

API .NET per la ricerca all'interno di file e cartelle

Conclusione

In questo articolo, abbiamo esaminato la magia della ricerca RegEx per trovare tutte le parole che hanno un determinato schema all’interno di vari documenti basati su testo come file DOCX, PDF e TXT in diverse cartelle utilizzando C#. Successivamente, abbiamo presentato i risultati della ricerca evidenziando le parole cercate e stampandole in un formato leggibile.

Per dettagli completi sull’API, si consiglia ai lettori di fare riferimento alla documentazione.

Eventuali richieste o discussioni aggiuntive possono essere indirizzate al forum disponibile.

Guarda anche