Ontdek de magie van programmatisch regex-zoeken! In de wereld van coderen zijn reguliere expressies een soort geheime codes die ons helpen specifieke informatie in tekst te vinden. Dit artikel laat zien hoe u kunt zoeken op regex in C# om slim documenten met verschillende bestandsformaten te doorzoeken.
.NET API voor Regex Zoeken in documenten door Regex
Voor Regex Search gebruiken we de GroupDocs.Search for .NET API. Hierdoor kunnen we tekst zoeken in bestanden van verschillende formaten in mappen, gewoon door het regex-patroon op te geven. Met deze bibliotheek kunnen we programmatisch tekst doorzoeken in een breed scala aan bestandsindelingen, zoals Word-documenten, spreadsheets, presentaties, PDF-bestanden, opmaakbestanden, eBooks, e-mailberichten, One Note-documenten en ZIP-archieven.
Voor een uitgebreide lijst met ondersteunde bestandsformaten raadpleegt u de uitgebreide documentatie.
U heeft de mogelijkheid om de DLL’s of het MSI-installatieprogramma uit de downloadsectie te halen, of u kunt de API in uw .NET-applicatie installeren met behulp van NuGet.
Hoe u in bestanden kunt zoeken met Regex met behulp van C#
Volg deze stappen om met C# een regex-zoekopdracht uit te voeren in meerdere bestanden met verschillende bestandsformaten in mappen: Later kunt u eenvoudig de gemarkeerde HTML-uitvoerbestanden genereren voor elk gevonden document.
- Maak een Index door een mappad op te geven.
- Voeg het pad van de bovenliggende map voor de zoekmap toe aan de gemaakte index.
- Definieer de regex-zoekquery.
- Voer de zoekopdracht uit met behulp van de zoekmethode om de zoekresultaten te verkrijgen.
- Nu kunt u SearchResults herhalen om een uitvoer te maken zoals u wilt.
De regex die in de onderstaande code wordt gebruikt, identificeert alle woorden met opeenvolgende herhaalde tekens, zoals; toegevoegd, hout, en zie. De volgende C#-code voert de snelle zoekactie met regex uit in meerdere bestanden met verschillende bestandsindelingen in mappen.
// Zoeken op RegEx in meerdere bestanden in meerdere mappen met behulp van C#
// Een indexmap maken en de map van het document eraan toevoegen
Index index = new Index("indexing-folder-path");
index.Add("path/parent-folder");
// Bereid de Regex-query en -zoekopdracht voor
// Regex is hier bedoeld om alle woorden met opeenvolgende herhaalde tekens te identificeren.
string query = "^(.)\\1{1,}";
SearchResult result = index.Search(query);
Hier heb ik de regex-zoekresultaten van de bovenstaande code gemarkeerd:
Zoekresultaten afdrukken
De volgende C#-code biedt twee manieren om uw zoekresultaten te presenteren.
- Markeer alle gevonden woorden.
- Print in een leesbaar en analyseerbaar formaat
// Markeren en afdrukken van Regex-zoekresultaten voor alle documenten
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);
// Gevonden termen afdrukken
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
...
Een gratis licentie of een gratis proefversie verkrijgen
Gratis vergunning
Verkrijg gratis een tijdelijke licentie om deze bibliotheek zonder beperkingen te verkennen.
Gratis proefperiode
U kunt de gratis proefversie downloaden via de downloadsectie.
Conclusie
In dit artikel hebben we de magie van RegEx-zoeken onderzocht om alle woorden met een bepaald patroon te vinden in verschillende op tekst gebaseerde documenten zoals DOCX-, PDF- en TXT-bestanden in verschillende mappen met behulp van C#. Daarna presenteerden we de zoekresultaten door de gezochte woorden te markeren en in een leesbaar formaat af te drukken.
Voor uitgebreide details over de API wordt aangeraden de documentatie te raadplegen.
Eventuele vragen of aanvullende discussies kunnen worden gericht aan het beschikbare forum.