Відкрийте магію програмного пошуку регулярних виразів! У світі програмування регулярні вирази схожі на секретні коди, які допомагають нам знаходити певну інформацію в тексті. Ця стаття покаже вам, як виконувати пошук за регулярним виразом у C#, щоб розумно шукати документи різних форматів файлів.

.NET API для пошуку Regex у документах за допомогою Regex

Для Regex Search ми будемо використовувати GroupDocs.Search for .NET API. Це дозволяє нам шукати текст у файлах різних форматів у папках, просто надавши шаблон регулярного виразу. Ця бібліотека дає нам змогу програмно шукати текст у різноманітних форматах файлів, таких як документи Word, електронні таблиці, презентації, файли PDF, файли розмітки, електронні книги, повідомлення електронної пошти, документи One Note та архіви ZIP.

Щоб отримати докладний список підтримуваних форматів файлів, зверніться до вичерпної документації.

У вас є можливість отримати DLL або інсталятор MSI із розділу завантажень, або ви можете встановити API у свою програму .NET за допомогою NuGet.

Як шукати у файлах за регулярним виразом за допомогою C#

Виконайте такі кроки, щоб виконати пошук за регулярними виразами в кількох файлах різних форматів у папках за допомогою C#: Пізніше ви зможете легко створити виділені вихідні файли HTML для кожного знайденого документа.

  • Створіть Індекс, указавши шлях до папки.
  • Додайте шлях до батьківської папки для каталогу пошуку до створеного індексу.
  • Визначте пошуковий запит регулярного виразу.
  • Щоб отримати результати пошуку, виконайте пошук за допомогою методу Search.
  • Тепер ви можете виконати ітерацію в SearchResults, щоб створити результат, який вам подобається.

Регулярний вираз, який використовується у наведеному нижче коді, визначає всі слова, які мають послідовні повторювані символи, наприклад; доданий, деревина, і див. Наступний код C# виконує швидкий пошук за регулярним виразом у кількох файлах різних форматів у папках.

// Пошук за RegEx у кількох файлах у кількох папках за допомогою C#

// Створення індексної папки та додавання до неї папки документа
Index index = new Index("indexing-folder-path");
index.Add("path/parent-folder");

// Підготуйте Regex Query and Search
// Регулярний вираз тут призначений для визначення всіх слів, які містять будь-які послідовні повторювані символи.
string query = "^(.)\\1{1,}"; 
SearchResult result = index.Search(query);

Тут я виділив результати пошуку регулярних виразів у наведеному вище коді:

Виділені результати пошуку регулярних виразів у форматі HTML

Друк результатів пошуку

Наведений нижче код C# пропонує два способи представлення результатів пошуку.

  1. Виділіть усі знайдені слова.
  2. Друкуйте в зручному для читання та аналізу форматі
// Виділення та друк результатів пошуку регулярних виразів для всіх документів
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);
        // Друк знайдених термінів
        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
...

Отримання безкоштовної ліцензії або безкоштовної пробної версії

Безкоштовна ліцензія

Отримайте тимчасову ліцензію безкоштовно, щоб без обмежень досліджувати цю бібліотеку.

Безкоштовне випробування

Ви можете завантажити безкоштовну пробну версію з розділу завантажень.

.NET API для пошуку у файлах і папках

Висновок

У цій статті ми розглянули магію пошуку за регулярними виразами, щоб знайти всі слова, що мають певний шаблон, у різних текстових документах, таких як DOCX, PDF і TXT, у кількох папках за допомогою C#. Після цього ми представили результати пошуку, виділивши шукані слова та надрукувавши їх у зручному для читання форматі.

Щоб отримати детальну інформацію про API, читачам радимо звернутися до документації.

Будь-які запитання чи додаткові обговорення можна направляти на доступний форум.

Дивись також