Articulo de referencia

alfombra salvaje

wildmat es una biblioteca de coincidencia de patrones desarrollada por Rich Salz . Basada en la sintaxis de comodines ya utilizada en el shell Bourne , wildmat proporciona un me...

wildmat es una biblioteca de coincidencia de patrones desarrollada por Rich Salz . Basada en la sintaxis de comodines ya utilizada en el shell Bourne , wildmat proporciona un mecanismo uniforme para la coincidencia de patrones en diversas aplicaciones con una sintaxis más sencilla que la que suelen ofrecer las expresiones regulares . Los patrones se anclan implícitamente al principio y al final de cada cadena al comprobar si hay coincidencia.

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

operaciones de coincidencia de patrones

Existen cinco operaciones de coincidencia de patrones, además de la coincidencia estricta uno a uno entre el patrón y la fuente que se va a comprobar.

  • Utilice un asterisco ( * ) para coincidir con cualquier secuencia de cero o más caracteres.
  • Signo de interrogación ( ? ) para coincidir con cualquier carácter individual.
  • Conjunto de caracteres especificados. Se especifica como una lista de caracteres, un rango de caracteres separado por un guion (o guion), o cualquier combinación de listas y rangos. El guion también puede incluirse en el conjunto como carácter si marca el inicio o el final del mismo. Este conjunto se encierra entre corchetes. El corchete de cierre ( ] ) puede utilizarse en un conjunto si es el primer carácter del mismo.
  • Negación de un conjunto. Se especifica de la misma forma que el conjunto, con la adición de un signo de intercalación (^) al principio de la cadena de prueba, justo dentro del corchete de apertura. (NNTP especifica una alternativa,  !. La implementación puede configurarse para usar cualquiera de las dos).
  • El carácter de barra invertida ( \ ) invalida el significado especial del corchete de apertura ( [ ), el asterisco, la barra invertida o el signo de interrogación. Dos barras invertidas consecutivas harán que la barra invertida se evalúe como un carácter sin significado especial.

Ejemplos

  • *foo* coincide con la cadena que contiene "foo".
  • mini* coincide con cualquier cosa que comience con "mini" (incluida la cadena "mini" en sí misma).
  • ???* coincide con cualquier cadena de tres o más letras.
  • [0-9a-zA-Z] coincide con cada carácter alfanumérico ASCII .
  • [^]-] coincide con un carácter distinto de un corchete de cierre o un guion.

Uso

wildmat se ve con mayor frecuencia 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 el comparador glob POSIX fnmatch en septiembre de 1992. La versión temprana contenía un posible acceso fuera de límites en no cerrado [ . [ 2 ]

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

En la versión más reciente de INN, que admite UTF-8, se añadió "uwildmat", que admite todas las características de wildmat. Esta reescritura de 2000, realizada por Russ Allbery, corrige el error OOB de la implementación original. Los bucles de C muy encadenados se simplificaron a instrucciones 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 Git lo importa y lo utiliza. No admite UTF-8, pero tiene corregido el OOB y admite clases de caracteres y globs de estrellas (** para profundidad arbitraria). [ 5 ]

Véase también

Referencias

  1. Salz, Rich (25 de junio de 2019). "wildmat: El clásico y venerable comparador de patrones wildmat; dominio público" . GitHub . Recuperado el 25 de noviembre de 2019 .
  2. Salz, Rich (25 de junio de 2019). "wildmat.c" . GitHub . Puede que no sea robusto frente a patrones mal formados; por ejemplo, "foo[a-" podría causar una violación de segmentación.
  3. Manual de funciones de la biblioteca de Linux de ManKier.comuwildmat(3)  
  4. "uwildmat.c en trunk/lib – INN" . inn.eyrie.org . Consultado el 27 de noviembre de 2019 .
  5. "git/git: wildmatch.c" . GitHub . 16 de febrero de 2022.
  • Rich Salz (4 de abril de 1991). "v17i079: wildmat-1.4 - un comparador de patrones estilo /bin/sh, Part01/01" . Grupo de noticias : comp.sources.misc . Usenet: 4 de abril de 1991.034350.3923@sparky.IMD.Sterling.COM .  
  • Rich Salz (9 de marzo de 1991). "v17i034: wildmat - un comparador de patrones estilo /bin/sh, Part01/01" . Grupo de noticias : comp.sources.misc . Usenet: 1991Mar9.044016.2409@sparky.IMD.Sterling.COM .  
Obtenido de " https://en.wikipedia.org/w/index.php?title=Wildmat&oldid=1353623744 "