Coincidencia de comodines acotada
Compara una cadena completa con comodines de interrogación y asterisco usando como máximo 256 puntos Unicode por entrada.
def wildcard(text, pattern):
if not isinstance(text, str) or not isinstance(pattern, str):
raise ValueError("text.required")
if len(text) > 256 or len(pattern) > 256:
raise ValueError("length.cap")
if any(ord(c) in (91, 93, 92) for c in pattern):
raise ValueError("syntax.unsupported")
previous = [True] + [False] * len(pattern)
for j, token in enumerate(pattern, 1):
previous[j] = token == "*" and previous[j - 1]
for char in text:
current = [False] * (len(pattern) + 1)
for j, token in enumerate(pattern, 1):
current[j] = (current[j - 1] or previous[j]) if token == "*" else (
previous[j - 1] and (token == "?" or token == char))
previous = current
return previous[-1]| Proyecto | Comprueba cadenas vacías, asteriscos consecutivos y emoji, rechazando corchetes o barras inversas en lugar de interpretar reglas no admitidas. |
|---|---|
| Revisa antes de aplicar | Compara el comportamiento real con el resultado esperado. Si una prueba falla, investiga la causa antes de hacer más cambios. |
| Modelos | Configura un endpoint compatible con OpenAI o Anthropic usando la URL base y, si hace falta, una clave API. Prueba la conexión. Un servidor local debe estar en ejecución; las herramientas remotas pueden enviar datos por separado. |
def wildcard(text, pattern):
if not isinstance(text, str) or not isinstance(pattern, str):
raise ValueError("text.required")
if len(text) > 256 or len(pattern) > 256:
raise ValueError("length.cap")
if any(ord(c) in (91, 93, 92) for c in pattern):
raise ValueError("syntax.unsupported")
previous = [True] + [False] * len(pattern)
for j, token in enumerate(pattern, 1):
previous[j] = token == "*" and previous[j - 1]
for char in text:
current = [False] * (len(pattern) + 1)
for j, token in enumerate(pattern, 1):
current[j] = (current[j - 1] or previous[j]) if token == "*" else (
previous[j - 1] and (token == "?" or token == char))
previous = current
return previous[-1]Da a la sintaxis de búsqueda un contrato comprensible para los usuarios
GlobHaven ofrece un entorno de programación para Windows donde convertir un requisito de coincidencia en un cambio de software revisable. Empieza por la entrada que escriben los usuarios y los resultados que esperan. Una solicitud sobre sintaxis de búsqueda debe identificar los operadores admitidos y el comportamiento ante fallos antes de que el modelo conectado proponga un analizador o reescriba el código de coincidencia.
El ejemplo de comodines acotado ofrece una posible conversación de proyecto: hacer coincidir una cadena completa con una gramática deliberadamente limitada. Aporta ejemplos de patrones que tu aplicación acepta y rechaza y pide al asistente que examine cómo llegan esas reglas a la interfaz. Así evitas que un cambio en un operador prometa silenciosamente un lenguaje de búsqueda mucho más amplio.
Revisa el código propuesto junto con los mensajes y la validación en el código llamador. Prueba entradas vacías, caracteres ordinarios y combinaciones de comodines admitidos con tus propios casos de prueba. Incluye un caso que distinga hacer coincidir la cadena completa de encontrar una subcadena y comprueba después el comportamiento visible de búsqueda en la aplicación antes de confiar en la implementación.
Un modelo de IA sin filtros puede ayudar si tu endpoint compatible con OpenAI o de Anthropic admitido lo ofrece. Configura la conexión con credenciales cuando sean necesarias y comprueba sus herramientas y límites de contexto. GlobHaven proporciona el entorno del proyecto; el comportamiento del modelo sigue dependiendo del servicio y tú decides qué sintaxis propuesta corresponde a tu producto.
Antes de ampliar una función de coincidencia
¿Cómo describo el comportamiento de coincidencia sin nombrar un algoritmo?
Proporciona pares de patrón y entrada con resultados esperados verdaderos o falsos. Indica si debe coincidir la cadena completa y qué símbolos son especiales. Estos ejemplos dan al modelo un contrato claro sin prescribir una implementación que quizá no necesites.
¿Debe tratarse la sintaxis no admitida como texto literal?
Elige explícitamente ese comportamiento para la aplicación. Si debe rechazarse, incluye la ruta y el mensaje de error esperados. Pide al asistente que conserve esa elección en lugar de ampliar la gramática sin avisar porque otro comparador admita más operadores.
¿Qué demuestra la diferencia entre coincidencia de subcadena y coincidencia completa?
Usa una entrada con caracteres adicionales antes o después de una parte que, por lo demás, coincida, e indica el resultado esperado. Prueba el mismo caso a través de la interfaz, ya que el código llamador podría transformar el patrón o la entrada.
¿Un comodín añadido afectará a las búsquedas guardadas?
Puede hacerlo si un texto antes literal adquiere un significado nuevo. Identifica los patrones almacenados y su interpretación antes de cambiar la sintaxis. Revisa ejemplos de compatibilidad con el código propuesto y decide cómo deben comportarse las búsquedas existentes después del cambio.
GlobHaven · Actualizado 2026-10-25