Khám phá sự kỳ diệu của tìm kiếm biểu thức chính quy có lập trình! Trong thế giới mã hóa, biểu thức chính quy giống như những mã bí mật giúp chúng ta tìm thấy thông tin cụ thể trong văn bản. Bài viết này sẽ hướng dẫn các bạn cách tìm kiếm bằng biểu thức chính quy trong C# để tìm kiếm tài liệu có nhiều định dạng file khác nhau một cách thông minh.

API .NET cho Regex Tìm kiếm trong tài liệu bằng Regex

Đối với Tìm kiếm Regex, chúng tôi sẽ sử dụng API GroupDocs.Search for .NET. Điều này cho phép chúng tôi tìm kiếm văn bản trong các tệp có định dạng khác nhau trên các thư mục chỉ bằng cách cung cấp mẫu biểu thức chính quy. Thư viện này cho phép chúng tôi tìm kiếm văn bản theo chương trình ở nhiều định dạng tệp, chẳng hạn như tài liệu Word, bảng tính, bản trình bày, tệp PDF, tệp Đánh dấu, sách điện tử, thư email, tài liệu One Note và kho lưu trữ ZIP.

Để biết danh sách chuyên sâu về các định dạng tệp được hỗ trợ, hãy tham khảo tài liệu toàn diện.

Bạn có tùy chọn lấy tệp DLL hoặc trình cài đặt MSI từ phần tải xuống hoặc bạn có thể cài đặt API vào ứng dụng .NET của mình bằng NuGet.

Cách tìm kiếm trong tệp bằng Regex bằng C#

Hãy làm theo các bước sau để thực hiện tìm kiếm biểu thức chính quy trong nhiều tệp có định dạng tệp khác nhau trong các thư mục bằng C#: Sau này, bạn có thể dễ dàng tạo các tệp đầu ra HTML được đánh dấu cho mỗi tài liệu được tìm thấy.

  • Tạo Chỉ mục bằng cách cung cấp đường dẫn thư mục.
  • Thêm đường dẫn của thư mục mẹ cho thư mục tìm kiếm vào chỉ mục đã tạo.
  • Xác định truy vấn tìm kiếm biểu thức chính quy.
  • Thực hiện tìm kiếm bằng phương pháp Search để nhận được kết quả tìm kiếm.
  • Bây giờ bạn có thể lặp lại SearchResults để tạo kết quả đầu ra theo ý muốn.

Regex được sử dụng trong đoạn mã được đề cập bên dưới xác định tất cả các từ có các ký tự lặp lại liên tiếp như; thêm vào, gỗ, và xem. Mã C# sau đây thực hiện tìm kiếm nhanh bằng biểu thức chính quy trong nhiều tệp có định dạng tệp khác nhau trên các thư mục.

// Tìm kiếm bằng RegEx trong nhiều tệp trên nhiều thư mục bằng C#

// Tạo thư mục chỉ mục và thêm thư mục tài liệu vào đó
Index index = new Index("indexing-folder-path");
index.Add("path/parent-folder");

// Chuẩn bị truy vấn và tìm kiếm Regex
// Regex ở đây là để xác định tất cả các từ có bất kỳ ký tự lặp lại liên tiếp nào.
string query = "^(.)\\1{1,}"; 
SearchResult result = index.Search(query);

Ở đây tôi đã đánh dấu kết quả tìm kiếm biểu thức chính quy của đoạn mã trên:

Kết quả nổi bật của Tìm kiếm Regex ở định dạng HTML

In kết quả tìm kiếm

Mã C# sau đây cung cấp hai cách để trình bày kết quả tìm kiếm của bạn.

  1. Đánh dấu tất cả các từ tìm thấy.
  2. In ở định dạng có thể đọc và phân tích được
// Đánh dấu và in kết quả tìm kiếm Regex cho tất cả tài liệu
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);
        // In các thuật ngữ được tìm thấy
        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
...

Nhận giấy phép miễn phí hoặc dùng thử miễn phí

Giấy phép miễn phí

Nhận [giấy phép tạm thời] miễn phí để khám phá thư viện này mà không bị ràng buộc.

Dùng thử miễn phí

Bạn có thể tải xuống bản dùng thử miễn phí từ phần tải xuống.

API .NET để tìm kiếm trong tệp và thư mục

Phần kết luận

Trong bài viết này, chúng tôi đã xem xét sự kỳ diệu của tìm kiếm RegEx để tìm tất cả các từ có mẫu nhất định trong các tài liệu dựa trên văn bản khác nhau như tệp DOCX, PDF và TXT trên một số thư mục bằng C#. Sau đó, chúng tôi trình bày kết quả tìm kiếm bằng cách đánh dấu các từ được tìm kiếm và in chúng ở định dạng có thể đọc được.

Để biết chi tiết đầy đủ về API, độc giả nên tham khảo tài liệu.

Mọi thắc mắc hoặc thảo luận bổ sung có thể được chuyển đến diễn đàn có sẵn.

Xem thêm