¡Descubre la magia de la búsqueda programática de expresiones regulares! En el mundo de la codificación, las expresiones regulares son como códigos secretos que nos ayudan a encontrar información específica en el texto. Este artículo le mostrará cómo buscar por expresiones regulares en C# para buscar documentos de varios formatos de archivo de manera inteligente.

API .NET para búsqueda de expresiones regulares en documentos mediante expresiones regulares

Para la búsqueda de expresiones regulares, utilizaremos la API GroupDocs.Search for .NET. Esto nos permite buscar texto dentro de archivos de varios formatos en carpetas simplemente proporcionando el patrón de expresiones regulares. Esta biblioteca nos permite buscar texto mediante programación en una amplia gama de formatos de archivo, como documentos de Word, hojas de cálculo, presentaciones, archivos PDF, archivos de marcado, libros electrónicos, mensajes de correo electrónico, documentos de One Note y archivos ZIP.

Para obtener una lista detallada de los formatos de archivo admitidos, consulte la documentación completa.

Tiene la opción de obtener las DLL o el instalador MSI desde la sección de descargas, o puede instalar la API en su aplicación .NET usando NuGet.

Cómo buscar archivos por Regex usando C#

Siga estos pasos para realizar una búsqueda de expresiones regulares en varios archivos de varios formatos de archivo dentro de carpetas usando C#: Más adelante podrá generar fácilmente los archivos de salida HTML resaltados para cada documento encontrado.

  • Cree un Índice proporcionando una ruta de carpeta.
  • Agregue la ruta de la carpeta principal del directorio de búsqueda al índice creado.
  • Defina la consulta de búsqueda de expresiones regulares.
  • Ejecute la búsqueda utilizando el método de búsqueda para obtener los resultados de la búsqueda.
  • Ahora puede iterar en SearchResults para crear una salida como desee.

La expresión regular utilizada en el código mencionado a continuación identifica todas las palabras que tienen caracteres repetidos consecutivos como; añadido, madera, y ver. El siguiente código C# realiza la búsqueda rápida por expresiones regulares en varios archivos de diferentes formatos de archivo en las carpetas.

// Busque por RegEx en varios archivos en varias carpetas usando C#

// Crear una carpeta de índice y agregarle la carpeta del documento
Index index = new Index("indexing-folder-path");
index.Add("path/parent-folder");

// Prepare la consulta y búsqueda de expresiones regulares
// Regex aquí es para identificar todas las palabras que tienen caracteres repetidos consecutivos.
string query = "^(.)\\1{1,}"; 
SearchResult result = index.Search(query);

Aquí he resaltado los resultados de búsqueda de expresiones regulares del código anterior:

Resultados destacados de la búsqueda Regex en formato HTML

Imprimir resultados de búsqueda

El siguiente código C# proporciona dos formas de presentar los resultados de su búsqueda.

  1. Resalte todas las palabras encontradas.
  2. Imprima en un formato legible y analizable
// Resaltado e impresión de resultados de búsqueda de expresiones regulares para todos los 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);
        // Impresión de términos 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
...

Obtener una licencia gratuita o una prueba gratuita

Licencia gratuita

Obtenga una licencia temporal de forma gratuita para explorar esta biblioteca sin restricciones.

Prueba gratis

Puedes descargar la prueba gratuita desde la sección de descargas.

API .NET para buscar dentro de archivos y carpetas

Conclusión

En este artículo, analizamos la magia de la búsqueda RegEx para encontrar todas las palabras que tienen un patrón determinado dentro de varios documentos basados en texto, como archivos DOCX, PDF y TXT, en varias carpetas usando C#. Luego, presentamos los resultados de la búsqueda resaltando las palabras buscadas e imprimiéndolas en un formato legible.

Para obtener detalles completos sobre la API, se recomienda a los lectores que consulten la documentación.

Cualquier consulta o discusión adicional puede dirigirse al foro disponible.

Ver también