stringtranslate.com

alfombra salvaje

wildmat es una biblioteca de coincidencia de patrones desarrollada por Rich Salz . Basado en la sintaxis de comodines ya utilizada en el shell Bourne , wildmat proporciona un mecanismo uniforme para hacer coincidir patrones entre aplicaciones con una sintaxis más simple que la que normalmente ofrecen las expresiones regulares . Los patrones están implícitamente anclados al principio y al final de cada cadena cuando se prueba una coincidencia.

En junio de 2019, Rich Salz lanzó la versión original de la biblioteca ahora desaparecida en GitHub bajo una dedicatoria de dominio público . [1]

Operaciones de coincidencia de patrones

Hay cinco operaciones de coincidencia de patrones además de una coincidencia estricta uno a uno entre el patrón y la fuente cuya coincidencia se debe verificar.

Ejemplos

Uso

wildmat se ve más comúnmente en implementaciones NNTP como el propio INN de Salz , también en software no relacionado como GNU tar y Transmission . GNU tar reemplazó wildmat con POSIX fnmatch glob matcher en septiembre de 1992. La primera versión contenía un posible acceso fuera de límites en archivos no cerrados [ . [2]

La implementación original de wildmat orientada a bytes no puede manejar conjuntos de caracteres multibyte y plantea problemas cuando el texto que se busca puede contener varios conjuntos de caracteres incompatibles. El grupo de trabajo IETF NNTP ha desarrollado una versión simplificada de wildmat orientada a la codificación UTF-8 . Es parte de RFC  3977 (sección 4), el estándar de 2006 para NNTP.

En el INN más nuevo que admite UTF-8, se agregó un "uwildmat" que admite todas las funciones de wildmat. Esta reescritura de 2000, realizada por Russ Allbery, corrige el OOB en la implementación original. Los bucles C fuertemente enrollados se escribieron en declaraciones más pequeñas. [3] [4]

Rsync incluye un descendiente de wildmat con licencia GPLv3 conocido como wildmatch, modificado por Wayne Davison. El sistema de control de versiones de Git lo importa y lo utiliza. No es compatible con UTF-8, pero tiene el OOB arreglado y tiene soporte adicional para clases de personajes y globos estelares (** para profundidad arbitraria). [5]

Ver también

Referencias

  1. ^ Salz, Rich (25 de junio de 2019). "wildmat: el clásico comparador de patrones wildmat; dominio público". GitHub . Consultado el 25 de noviembre de 2019 .
  2. ^ Salz, Rich (25 de junio de 2019). "salvajemat.c". GitHub . Puede que no sea robusto frente a patrones mal formados; por ejemplo, "foo[a-" podría provocar una infracción de segmentación.
  3. ^ uwildmat(3)  -  Manual de funciones de la biblioteca de Linux
  4. ^ "uwildmat.c en tronco/lib - INN". posada.eyrie.org . Consultado el 27 de noviembre de 2019 .
  5. ^ "git/git: wildmatch.c". GitHub . 16 de febrero de 2022.

enlaces externos