例として、文を単一の結果に一致させたい
\w+
something
\w+ else
something \w+
" " と言うnothing
と、ワイルドカードであるため、最初のエントリのみが表示されます。" something here
" の場合、最後のエントリ (単語とワイルドカード) のみが検索されます。
現在、一致すると複数の結果が得られますが、どれが最適かを判断する方法がありません。
現在のコードで " " と言うとsomething
、エントリ 1 と 2 などを取得\w+
します。検索された単語がsomethingだったので、somethingをデフォルトにする必要があります。
現在のコードは次のようになります。
private Node BestMatch(string str)
{
return
(from p in Nodes
where Match(str, p.Value.Pattern)
select p.Value).LastOrDefault();
}
また、somethings などの検索で、ワイルドカードである最初のエントリが取得され、予想外に最後のエントリ " something \w+
" も取得されるという問題を発見しました。