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:
Imprimindo resultados de pesquisa
O código C# a seguir fornece duas maneiras de apresentar os resultados da pesquisa.
- Destaque todas as palavras encontradas.
- 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.
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.