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

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

Для выполнения поиска по регулярным выражениям мы будем использовать API GroupDocs.Search for Java. С помощью этого API мы можем искать определенный текст в файлах разных форматов по папкам, просто задав ему шаблон регулярного выражения. Этот инструмент позволяет нам искать текст в различных типах файлов, таких как документы Word, электронные таблицы, презентации, файлы PDF, файлы разметки, электронные книги, сообщения электронной почты, документы One Note и ZIP-архивы, и все это программным способом.

Чтобы получить подробный список поддерживаемых форматов файлов, ознакомьтесь с подробной документацией.

У вас есть два варианта получения файла JAR: загрузить его из раздела загрузок или включить последние конфигурации репозитория и зависимостей Maven непосредственно в ваши приложения Java.

Поиск в файлах с помощью Regex с использованием Java

Вот простые шаги, как выполнить поиск по регулярным выражениям в нескольких файлах разных форматов в папках с помощью Java. После этого вы можете легко создавать выделенные выходные файлы HTML для каждого найденного документа.

  • Начните с создания Index, указав путь к папке.
  • Добавьте путь к основной папке, в которой вы хотите искать, в только что созданный индекс.
  • Настройте поисковый запрос по регулярному выражению.
  • Используйте метод поиска, чтобы запустить поиск и получить результаты.
  • Теперь вы можете пройти через SearchResults и сгенерировать желаемый результат в соответствии с вашими предпочтениями.

Регулярное выражение в приведенном ниже коде обнаруживает слова с последовательными повторяющимися символами, например «согласен», «позвони» и «скоро». Этот код Java выполняет быстрый поиск с использованием регулярных выражений в различных файлах разных форматов в разных папках.

// Regex Поиск нескольких файлов в папках с использованием Java

// Создание индексной папки и добавление в нее папки документа
Index index = new Index("path/indexing-folder-path");
index.add("path/parent-folder");

// Подготовьте запрос регулярного выражения и выполните поиск
// Регулярное выражение здесь предназначено для идентификации всех слов, имеющих какие-либо последовательные повторяющиеся символы.
String query = "^(.)\\1{1,}"; 
SearchResult result = index.search(query);

Ниже я выделил результаты поиска по регулярным выражениям в предоставленном коде:

Выделенные результаты поиска по регулярным выражениям в формате HTML

Печать результатов поиска

Следующий код Java предлагает два метода отображения результатов поиска:

  1. Выделите все найденные слова.
  2. Распечатайте результаты в формате, удобном для чтения и анализа.
// Выделение и печать результатов поиска по регулярным выражениям для всех документов
for (int i = 0 ; i < result.getDocumentCount(); i++)
{
    FoundDocument document = result.getFoundDocument(i);
  
    OutputAdapter outputAdapter = new FileOutputAdapter(OutputFormat.Html, "path/Highlight" + i + ".html");
    Highlighter highlighter = new DocumentHighlighter(outputAdapter);
    index.highlight(document, highlighter);
 
    System.out.println("\tDocument: " + document.getDocumentInfo().getFilePath());
    System.out.println("\tOccurrences: " + document.getOccurrenceCount());
    for (FoundDocumentField field : document.getFoundFields()) {
        System.out.println("\t\tField: " + field.getFieldName());
        System.out.println("\t\tOccurrences: " + field.getOccurrenceCount());

        // Печать найденных терминов
        if (field.getTerms() != null) {
            for (int k = 0; k < field.getTerms().length; k++) {
                System.out.println("\t\t\t" + field.getTerms()[k] + " - " + field.getTermsOccurrences()[k]);
            }
        }
    }
}
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
...

Получение бесплатной лицензии или бесплатной пробной версии

Бесплатная лицензия

Получите временную лицензию бесплатно, чтобы пользоваться этой библиотекой без ограничений.

Бесплатная пробная версия

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

Java API для поиска в файлах и папках

Заключение

В этой статье мы изучили основы чудес поиска Regex для поиска слов с определенными шаблонами в различных текстовых документах, таких как файлы DOCX, PDF и TXT, в нескольких папках с использованием Java. Впоследствии мы продемонстрировали результаты поиска, выделив идентифицированные слова и распечатав их в понятном формате.

Для полного понимания API читателям рекомендуется изучить документацию и Справочник по API.

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

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