Обмежене зіставлення з шаблоном
Зіставте весь рядок із шаблоном знаків питання та зірочок за обмеження 256 кодових точок 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]| Проєкт | Перевірте порожні рядки, сусідні зірочки й емодзі, відхиляючи квадратні дужки та зворотні косі риски як непідтримуваний синтаксис. |
|---|---|
| Перевірте перед застосуванням | Порівняйте фактичну поведінку з очікуваним результатом. Якщо перевірка не проходить, з’ясуйте причину перед наступними змінами. |
| Моделі | Налаштуйте OpenAI-сумісний або Anthropic endpoint із базовою URL-адресою та API-ключем, якщо він потрібен. Перевірте з’єднання. Локальний сервер моделі має працювати; віддалені інструменти можуть окремо передавати дані. |
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