上限付きワイルドカード照合
各入力を最大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のエンドポイントを、ベース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のエンドポイントで提供されていれば、フィルターなしAIモデルの支援を利用できます。必要な認証情報で接続を設定し、ツールとコンテキスト上限を確認してください。GlobHavenはプロジェクト環境を提供します。モデルの動作はサービスに依存し、製品に採用する構文は自分で決めます。
一致判定機能を拡張する前に
アルゴリズム名を使わず一致動作をどう説明しますか?
パターンと入力の組に、期待するtrueまたはfalseを添えます。文字列全体の一致が必要か、どの記号が特殊かを示してください。不要かもしれない実装を指定せず、明確な契約を伝えられます。
非対応の構文を文字そのものとして扱うべきですか?
アプリでの動作を明示的に選びます。拒否するなら期待するエラー経路とメッセージを含めてください。別の照合処理が多くの演算子に対応しているからと文法を黙って拡張せず、その選択を維持するよう依頼します。
部分一致と全体一致の違いはどう示しますか?
一致する部分の前後に余分な文字がある入力を使い、期待結果を示します。呼び出し側がパターンや入力を変換する場合もあるため、同じ例を画面からもテストしてください。
ワイルドカードの追加は保存済み検索に影響しますか?
以前は文字として扱っていた入力に新たな意味が付けば影響します。構文変更前に保存されたパターンと解釈を特定してください。コード案と互換性の例をレビューし、変更後に既存の検索をどう動かすか決めます。
GlobHaven · 更新日 2026-10-25