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:
Stampa dei risultati della ricerca
Il codice C# seguente fornisce due modi per presentare i risultati della ricerca.
- Evidenzia tutte le parole trovate.
- 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.
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.