0

例として、文を単一の結果に一致させたい

\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+" も取得されるという問題を発見しました。

4

1 に答える 1

1

「Something」以外の文字列に一致するように最初の正規表現を更新しました。残りはうまくいけばそのまま機能するはずです...

^(?!Something)\w*
something
\w+ else
something \w+
于 2013-10-02T18:27:04.957 に答える