Correspondance bornée avec jokers
Comparez une chaîne entière avec les jokers point d’interrogation et étoile, chaque entrée étant limitée à 256 points Unicode.
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]| Projet | Testez chaînes vides, étoiles consécutives et emoji, en rejetant crochets et barres obliques inverses plutôt que des règles non prises en charge. |
|---|---|
| Vérifiez avant d’appliquer | Comparez le comportement observé au résultat attendu. Si une vérification échoue, cherchez la cause avant de poursuivre les modifications. |
| Modèles | Configurez un endpoint compatible OpenAI ou Anthropic avec son URL de base et une clé API si nécessaire. Testez la connexion. Un serveur local doit fonctionner ; les outils distants peuvent transmettre des données séparément. |
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]Donnez à la syntaxe de recherche un contrat compréhensible
GlobHaven offre un espace de programmation pour Windows afin de transformer une exigence de correspondance en modification logicielle vérifiable. Partez des données saisies par les utilisateurs et des résultats attendus. Une demande concernant la syntaxe de recherche doit préciser les opérateurs pris en charge et le comportement en cas d’échec avant que le modèle connecté propose un analyseur ou réécrive le code de correspondance.
L’exemple de jokers à limites définies fournit un sujet possible pour votre projet : faire correspondre une chaîne entière avec une grammaire volontairement limitée. Apportez des exemples de motifs acceptés et rejetés par l’application, et demandez à l’assistant d’examiner comment ces règles se traduisent dans l’interface. Cela évite qu’une modification d’un opérateur promette silencieusement un langage de recherche bien plus vaste.
Examinez le code proposé avec les messages et la validation de l’appelant. Testez les entrées vides, les caractères ordinaires et les combinaisons de jokers pris en charge avec vos propres cas de test. Incluez un cas distinguant la correspondance de chaîne entière de la recherche d’une sous-chaîne, puis vérifiez le comportement visible dans l’application avant de vous fier à l’implémentation.
Un modèle d’IA sans filtre peut vous assister si votre point de terminaison compatible OpenAI ou Anthropic pris en charge en propose un. Configurez la connexion avec les identifiants nécessaires et vérifiez ses outils et limites de contexte. GlobHaven fournit l’espace de projet ; le comportement du modèle dépend toujours du service, et vous décidez quelle syntaxe proposée appartient à votre produit.
Avant d’étendre une fonctionnalité de correspondance
Comment décrire la correspondance sans nommer d’algorithme ?
Fournissez des paires motif-entrée avec les résultats vrai ou faux attendus. Précisez si toute la chaîne doit correspondre et quels symboles sont spéciaux. Ces exemples donnent un contrat clair au modèle sans prescrire une implémentation peut-être inutile.
Faut-il traiter la syntaxe non prise en charge comme du texte littéral ?
Choisissez explicitement ce comportement pour l’application. Si elle doit être rejetée, incluez le chemin d’erreur et le message attendus. Demandez à l’assistant de préserver ce choix plutôt que d’étendre discrètement la grammaire parce qu’un autre moteur prend en charge davantage d’opérateurs.
Comment montrer la différence entre correspondance partielle et complète ?
Utilisez une entrée avec des caractères supplémentaires avant ou après une partie qui correspondrait, et précisez le résultat attendu. Testez le même cas via l’interface, car l’appelant peut transformer le motif ou l’entrée.
Un joker ajouté affectera-t-il les recherches enregistrées ?
Cela peut arriver si un texte auparavant littéral prend un nouveau sens. Identifiez les motifs stockés et leur interprétation avant de modifier la syntaxe. Examinez des exemples de compatibilité avec le code proposé et décidez comment les recherches existantes doivent se comporter après la modification.
GlobHaven · Mis à jour 2026-10-25