0

我希望能够将句子匹配到单个结果作为示例

\w+
something
\w+ else
something \w+

所以当我说“ nothing”时,它只会列出第一个条目,因为那是一个通配符。对于“ something here”,它只会找到最后一个条目(单词加通配符)。

目前,当我匹配时,我得到了多个结果,但无法确定哪个是最佳匹配。

使用当前代码,当我说“ something”时,我得到条目 1 和 2 之\w+类的东西。应该默认某些东西,因为搜索的词是某物,

当前代码如下所示:

    private Node BestMatch(string str)
    {

        return 
                (from p in Nodes
                 where Match(str, p.Value.Pattern)
                 select p.Value).LastOrDefault();
    }

我还发现了一些搜索问题,比如它会得到第一个条目是通配符,而且出乎意料地还有最后一个“ something \w+”,因为它不关心它应该关心的空格。

4

1 回答 1

1

更新了第一个 Regex 以匹配任何不是“Something”的字符串。休息应该有望按原样工作......

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