1

Entity Frameworkでキーワード形式の検索機能を作りたいです。

void funcSearch(string keywork)
        {
            if (keywork == "[tag]")
            {
                //regex for is tag
                //do search tag
            }
            if (keywork == "user:1234")
            {
                //regex for userid is 1234
                //do search user with 1234
            }
            ...
        }

正規表現を使用して、SO などのクエリ文字列形式や任意の方法を解析できますか? 対応するキーワードですべてのケースを分析できる機能はありますか?

tags    [tag]
exact   "words here"
author  user:1234
user:me (yours)
score   score:3 (3+)
score:0 (none)
answers answers:3 (3+)
answers:0 (none)
isaccepted:yes
hasaccepted:no
inquestion:1234
views   views:250
sections    title:apples
body:"apples oranges"
url url:"*.example.com"
favorites   infavorites:mine
infavorites:1234
status  closed:yes
duplicate:no
migrated:no
wiki:no
types   is:question
is:answer

アドバイスありがとうございます。

4

1 に答える 1

3

はい、できます。正規表現のリストを作成して、一致するものが見つかるまでチェックしてループする必要があります。(優先順位を正しく付けてください。)

たとえば、検索クエリがタグをクエリしているかどうかを調べるには、次の正規表現を使用できます。

string query = "[tag]";
bool isTag = Regex.IsMatch(query, @"^\[.+?\]$");

ユーザー ID に一致する別の正規表現を次に示します。

string query = "user:1234";
var match = Regex.Match(query, @"^user:(\d+)$", RegexOptions.IgnoreCase);

最初にトリミングする必要があることに注意してくださいquery

于 2013-09-30T15:36:41.187 に答える