Откройте для себя магию программного поиска по регулярным выражениям! В мире кодирования регулярные выражения подобны секретным кодам, которые помогают нам находить определенную информацию в тексте. В этой статье показано, как выполнять поиск по регулярным выражениям в C# для разумного поиска документов различных форматов файлов.

.NET API для поиска по регулярным выражениям в документах с помощью Regex

Для поиска по регулярным выражениям мы будем использовать API GroupDocs.Search for .NET. Это позволяет нам искать текст в файлах различных форматов по папкам, просто предоставляя шаблон регулярного выражения. Эта библиотека позволяет нам программно искать текст в широком диапазоне форматов файлов, таких как документы 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");

// Подготовьте запрос регулярного выражения и выполните поиск
// Регулярное выражение здесь предназначено для идентификации всех слов, имеющих какие-либо последовательные повторяющиеся символы.
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 для поиска в файлах и папках

Заключение

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

Для получения подробной информации об API читателям рекомендуется обратиться к документации.

Любые вопросы или дополнительные обсуждения можно направлять на доступный форум.

Смотрите также