Ограниченное сопоставление с шаблоном
GlobHaven объединяет код сопоставления шаблонов и рабочее пространство Windows. Обсудите поддерживаемую грамматику с совместимой моделью и проверьте её реализацию на полных строках и примерах 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]| Проект | Проверьте пустые строки, соседние звёздочки и эмодзи, отклоняя квадратные скобки и обратные косые черты как неподдерживаемый синтаксис. |
|---|---|
| Проверьте перед применением | Сравните фактическое поведение с ожидаемым. Если проверка не проходит, разберитесь в причине перед следующими изменениями. |
| Подключение | Базовый URL, учётные данные и доступный сервер. |
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]Задайте поисковому синтаксису понятные пользователям правила
GlobHaven предоставляет рабочую среду программирования для Windows, превращающую требование к сопоставлению в проверяемое изменение программы. Начните с вводимого пользователями текста и ожидаемых результатов. Запрос о поисковом синтаксисе должен определить поддерживаемые операторы и поведение при сбое до того, как подключённая модель предложит парсер или перепишет код сопоставления.
Пример ограниченного сопоставления с подстановочными символами предлагает тему обсуждения проекта: сопоставление всей строки с намеренно ограниченной грамматикой. Добавьте примеры принимаемых и отклоняемых приложением шаблонов и попросите помощника изучить, как эти правила доходят до интерфейса. Так изменение одного оператора не станет молчаливым обещанием гораздо более широкого языка поиска.
Проверьте предлагаемый код вместе с сообщениями и проверкой в вызывающем коде. На своих примерах протестируйте пустой ввод, обычные символы и сочетания поддерживаемых подстановочных символов. Добавьте случай, отличающий сопоставление всей строки от поиска подстроки, затем проверьте видимое поведение поиска в приложении, прежде чем полагаться на реализацию.
Помочь может модель ИИ без фильтров, если её предлагает поддерживаемая конечная точка, совместимая с OpenAI, или Anthropic. Настройте подключение с учётными данными при необходимости и проверьте инструменты и пределы контекста. GlobHaven предоставляет рабочую среду проекта; поведение модели зависит от сервиса, а вы решаете, какой предложенный синтаксис нужен продукту.
Перед расширением функции сопоставления
Как описать сопоставление, не называя алгоритм?
Предоставьте пары шаблона и ввода с ожидаемым истинным или ложным результатом. Укажите, должна ли совпасть вся строка и какие символы специальные. Это задаёт модели ясные условия без навязывания потенциально ненужной реализации.
Нужно ли считать неподдерживаемый синтаксис буквальным текстом?
Явно выберите поведение приложения. Если требуется отклонение, включите ожидаемый путь ошибки и сообщение. Попросите помощника сохранить выбор, а не незаметно расширять грамматику из-за поддержки других операторов другим механизмом сопоставления.
Как показать разницу между поиском подстроки и полным сопоставлением?
Используйте ввод с дополнительными символами до или после совпадающей части и укажите ожидаемый результат. Проверьте тот же случай через интерфейс: вызывающий код может преобразовывать шаблон или ввод.
Повлияет ли новый подстановочный символ на сохранённые поиски?
Может, если ранее буквальный текст получит новый смысл. До изменения синтаксиса определите сохранённые шаблоны и их трактовку. Проверьте примеры совместимости с предлагаемым кодом и решите, как должны работать существующие поиски после изменения.
GlobHaven · Обновлено 2026-10-25