Ohraničené porovnání se zástupnými znaky
Porovnejte celý řetězec se zástupnými znaky otazníku a hvězdy s nejvýše 256 body Unicode na vstup.
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]| Projekt | Ověřte prázdné řetězce, sousední hvězdy a emoji a odmítněte hranaté závorky a zpětná lomítka jako nepodporovanou syntaxi. |
|---|---|
| Před použitím zkontrolujte | Porovnejte skutečné chování s očekávaným výsledkem. Pokud kontrola selže, před dalšími změnami zjistěte příčinu. |
| Modely | Nastavte endpoint kompatibilní s OpenAI nebo Anthropic pomocí základní URL a případného API klíče. Otestujte připojení. Lokální server modelu musí běžet; vzdálené nástroje mohou data odesílat samostatně. |
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]Dejte syntaxi hledání pravidla srozumitelná uživatelům
GlobHaven poskytuje programovací prostředí pro Windows k převodu požadavku na porovnávání na kontrolovatelnou změnu softwaru. Začněte vstupem uživatelů a výsledky, které očekávají. Zadání o syntaxi hledání má určit podporované operátory a chování při selhání dříve, než připojený model navrhne parser nebo přepíše porovnávací kód.
Příklad omezených zástupných znaků nabízí jedno téma: porovnávání celého řetězce se záměrně omezenou gramatikou. Přineste příklady vzorů, které aplikace přijímá a odmítá, a požádejte asistenta o kontrolu přenosu těchto pravidel do rozhraní. Změna jednoho operátoru tak nebude tiše slibovat mnohem rozsáhlejší vyhledávací jazyk.
Navržený kód kontrolujte spolu se zprávami a validací u volajícího. Na vlastních testovacích případech vyzkoušejte prázdný vstup, běžné znaky a kombinace podporovaných zástupných znaků. Přidejte případ rozlišující shodu celého řetězce a nalezení podřetězce a před spoléháním na implementaci ověřte viditelné chování hledání v aplikaci.
Nefiltrovaný model AI může pomoci, pokud jej podporovaný koncový bod kompatibilní s OpenAI nebo koncový bod Anthropic nabízí. Nastavte připojení s přihlašovacími údaji, jsou-li nutné, a ověřte nástroje i limity kontextu. GlobHaven dodává projektové prostředí; chování modelu závisí na službě a o syntaxi patřící do produktu rozhodujete vy.
Před rozšířením funkce porovnávání
Jak popsat porovnávání bez uvedení algoritmu?
Poskytněte dvojice vzoru a vstupu s očekávanou hodnotou pravda nebo nepravda. Uveďte, zda se musí shodovat celý řetězec a které symboly jsou zvláštní. Příklady dají modelu jasná pravidla bez předepisování možná zbytečné implementace.
Má se nepodporovaná syntaxe chápat jako doslovný text?
Toto chování pro aplikaci zvolte výslovně. Má-li se odmítat, zahrňte očekávanou chybovou cestu i zprávu. Požádejte asistenta o zachování volby místo tichého rozšiřování gramatiky jen proto, že jiný porovnávací nástroj podporuje více operátorů.
Co ukáže rozdíl mezi shodou podřetězce a celého řetězce?
Použijte vstup s dalšími znaky před jinak odpovídající částí nebo za ní a uveďte očekávaný výsledek. Stejný případ testujte přes rozhraní, protože volající může transformovat vzor nebo vstup.
Ovlivní přidaný zástupný znak existující uložená hledání?
Může, pokud dříve doslovný text získá nový význam. Před změnou syntaxe určete uložené vzory a jejich výklad. Prověřte příklady kompatibility s navrženým kódem a rozhodněte o chování stávajících hledání po změně.
GlobHaven · Aktualizováno 2026-10-25