Descubra a magia da pesquisa programática de regex! No mundo da codificação, as expressões regulares são como códigos secretos que nos ajudam a encontrar informações específicas no texto. Este artigo mostrará como pesquisar por regex em C# para pesquisar documentos de vários formatos de arquivo de maneira inteligente.

API .NET para pesquisa Regex em documentos por Regex

Para Regex Search, utilizaremos a API GroupDocs.Search for .NET. Isso nos permite pesquisar texto em arquivos de vários formatos em pastas apenas fornecendo o padrão regex. Essa biblioteca nos permite pesquisar texto programaticamente em uma ampla variedade de formatos de arquivo, como documentos do Word, planilhas, apresentações, arquivos PDF, arquivos de marcação, e-books, mensagens de e-mail, documentos do One Note e arquivos ZIP.

Para obter uma lista detalhada dos formatos de arquivo suportados, consulte a documentação abrangente.

Você tem a opção de obter as DLLs ou o instalador MSI na seção de downloads, ou pode instalar a API em seu aplicativo .NET usando NuGet.

Como pesquisar em arquivos por Regex usando C#

Siga estas etapas para realizar uma pesquisa regex em vários arquivos de vários formatos de arquivo dentro de pastas usando C#: Posteriormente, você pode gerar facilmente os arquivos de saída HTML destacados para cada documento encontrado.

  • Crie um Índice fornecendo um caminho de pasta.
  • Adicione o caminho da pasta pai do diretório de pesquisa ao índice criado.
  • Defina a consulta de pesquisa regex.
  • Execute a pesquisa usando o método Search para obter os resultados da pesquisa.
  • Agora você pode iterar em SearchResults para criar uma saída como desejar.

O regex usado no código mencionado abaixo identifica todas as palavras que possuem caracteres repetidos consecutivamente como; adicionado, madeira, e veja. O código C# a seguir realiza a pesquisa rápida por regex em vários arquivos de diferentes formatos em pastas.

// Pesquise por RegEx em vários arquivos em várias pastas usando C#

// Criando uma pasta de índice e adicionando a pasta do documento a ela
Index index = new Index("indexing-folder-path");
index.Add("path/parent-folder");

// Prepare a consulta e pesquisa Regex
// Regex aqui serve para identificar todas as palavras com caracteres repetidos consecutivos.
string query = "^(.)\\1{1,}"; 
SearchResult result = index.Search(query);

Aqui destaquei os resultados da pesquisa regex do código acima:

Resultados destacados da pesquisa Regex em formato HTML

Imprimindo resultados de pesquisa

O código C# a seguir fornece duas maneiras de apresentar os resultados da pesquisa.

  1. Destaque todas as palavras encontradas.
  2. Imprima em um formato legível e analisável
// Destacando e imprimindo resultados de pesquisa Regex para todos os documentos
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);
        // Imprimindo termos encontrados
        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
...

Obtendo uma licença gratuita ou uma avaliação gratuita

Licença gratuita

Obtenha uma licença temporária gratuitamente para explorar esta biblioteca sem restrições.

Teste grátis

Você pode baixar a versão de avaliação gratuita na seção de downloads.

API .NET para pesquisa em arquivos e pastas

Conclusão

Neste artigo, examinamos a magia da pesquisa RegEx para encontrar todas as palavras com um determinado padrão em vários documentos baseados em texto, como arquivos DOCX, PDF e TXT, em várias pastas usando C#. Posteriormente, apresentamos os resultados da pesquisa destacando as palavras pesquisadas e imprimindo-as em formato legível.

Para obter detalhes abrangentes sobre a API, os leitores são aconselhados a consultar a documentação.

Quaisquer dúvidas ou discussões adicionais podem ser direcionadas para o fórum disponível.

Veja também