8

既にワイルドカードが含まれている文字列の上にワイルドカード パターンを使用して検索したいシナリオがあります。私の言葉では、これは 2 通りのパターン マッチング要件であると言えます。

入力文字列とパターン文字列には、次のワイルドカードのいずれかまたは両方を含めることができます - ? % は 1 文字を表し、% は 0 個以上の文字を表します。入力およびパターン文字列で使用できるワイルドカードはこれら 2 つだけであるとします。

例:

bool IsMatch(string input, string pattern) //入力文字列がパターンに一致する場合は True を返し、それ以外の場合は False を返す必要があります。

IsMatch("XYZ%", "?Y%") // True を返す必要があります

IsMatch("YY?", "?Y%") // True を返す必要があります - 入力文字列の最後の文字は、パターンが Y の後の 0 個以上の文字に一致する単一の文字を期待します (つまり、単一の文字の一致が含まれます。良い)

IsMatch("X123", "?Y%") // False を返す必要があります - パターンが期待する入力文字列に Y がありません

IsMatch("?Y%", "?Y%")// True を返す必要があります

IsMatch("%", "?Y%")// True を返す必要があります - 入力文字列には、0 個以上の文字を表すワイルドカード % があり、任意の文字を含めることもできます。ある意味では、それ自体があらゆるサイズのものを表すパターンとして機能します。

ワイルドカードを使用しない文字列でワ​​イルドカードを使用したパターン マッチを実行することについてのみ説明している記事 (例: 正規表現) を見つけることができます。アルゴリズムを書き始めると、この種の一致を実行できるアルゴリズムを考え出すことが難しくなっているため、アルゴリズムに関するポインター/アイデアを探しています。あなたの意見に感謝します。

4

1 に答える 1