Programlı normal ifade aramasının büyüsünü keşfedin! Kodlama dünyasında düzenli ifadeler, metindeki belirli bilgileri bulmamıza yardımcı olan gizli kodlar gibidir. Bu makale, çeşitli dosya formatlarındaki belgeleri akıllıca aramak için C#’ta regex ile nasıl arama yapacağınızı gösterecektir.

Regex ile Belgelerde Regex Araması için .NET API

Regex Araması için GroupDocs.Search for .NET API’sini kullanacağız. Bu, yalnızca normal ifade modelini sağlayarak klasörler arasında çeşitli formatlardaki dosyalar içindeki metni aramamıza olanak tanır. Bu kitaplık bize, Word belgeleri, elektronik tablolar, sunumlar, PDF dosyaları, İşaretleme dosyaları, e-Kitaplar, e-posta mesajları, One Note belgeleri ve ZIP arşivleri gibi çok çeşitli dosya formatlarındaki metinleri programlı olarak arama gücü verir.

Desteklenen dosya formatlarının ayrıntılı bir listesi için kapsamlı belgelere bakın.

İndirilenler bölümünden DLL’leri veya MSI yükleyicisini alma seçeneğiniz vardır veya NuGet kullanarak API’yi .NET uygulamanıza yükleyebilirsiniz.

C# kullanarak Regex ile Dosyalarda Nasıl Arama Yapılır?

C# kullanarak klasörlerdeki çeşitli dosya formatlarındaki birden çok dosyada normal ifade araması gerçekleştirmek için şu adımları izleyin: Daha sonra, bulunan her belge için vurgulanan HTML çıktı dosyalarını kolayca oluşturabilirsiniz.

  • Bir klasör yolu sağlayarak bir Dizin oluşturun.
  • Arama dizini için ana klasörün yolunu oluşturulan dizine ekleyin.
  • Regex arama sorgusunu tanımlayın.
  • Arama sonuçlarını almak için Arama yöntemini kullanarak aramayı yürütün.
  • Artık istediğiniz gibi bir çıktı oluşturmak için AramaSonuçları’nı yineleyebilirsiniz.

Aşağıda belirtilen kodda kullanılan regex, aşağıdaki gibi ardışık tekrarlanan karakterlere sahip tüm kelimeleri tanımlar; eklendi, ahşap ve bakın. Aşağıdaki C# kodu, klasörler arasında farklı dosya formatlarındaki birden çok dosyada normal ifadeye göre hızlı arama gerçekleştirir.

// C# kullanarak birden çok klasördeki birden çok dosyada RegEx'e göre arama yapın

// Bir dizin klasörü oluşturma ve belgenin klasörünü buna ekleme
Index index = new Index("indexing-folder-path");
index.Add("path/parent-folder");

// Regex Sorgusunu Hazırlama ve Arama
// Buradaki Regex, ardışık tekrarlanan karakterlere sahip tüm kelimeleri tanımlamaktır.
string query = "^(.)\\1{1,}"; 
SearchResult result = index.Search(query);

Burada yukarıdaki kodun regex arama sonuçlarını vurguladım:

HTML formatında Regex Aramasının Vurgulanan Sonuçları

Arama Sonuçlarını Yazdırma

Aşağıdaki C# kodu, arama sonuçlarınızı sunmanın iki yolunu sağlar.

  1. Bulunan tüm kelimeleri vurgulayın.
  2. Okunabilir ve analiz edilebilir bir biçimde yazdırın
// Tüm belgeler için Regex Arama Sonuçlarını Vurgulama ve Yazdırma
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);
        // Bulunan terimleri yazdırma
        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
...

Ücretsiz Lisans veya Ücretsiz Deneme Alma

Ücretsiz lisans

Bu kitaplığı kısıtlama olmadan keşfetmek için ücretsiz olarak geçici lisans edinin.

Ücretsiz deneme

İndirilenler bölümünden ücretsiz deneme sürümünü indirebilirsiniz.

Dosya ve Klasörler İçinde Arama Yapmak için .NET API

Çözüm

Bu makalede, C# kullanarak çeşitli klasörlerdeki DOCX, PDF ve TXT dosyaları gibi çeşitli metin tabanlı belgelerde belirli bir desene sahip tüm kelimeleri bulmak için RegEx aramasının büyüsünü inceledik. Daha sonra aranan kelimeleri öne çıkararak ve okunabilir formatta yazdırarak arama sonuçlarını sunduk.

API hakkında kapsamlı ayrıntılar için okuyucuların belgelere başvurmaları önerilir.

Herhangi bir sorunuz veya ek tartışmanız mevcut forum adresine yönlendirilebilir.

Ayrıca bakınız