0

非常に大きな文字列に次のデータがありますstr

"RewrittenQuery: Word:(\"state\" \"states\" \"state s\") Word:(\"library\" \"libraries\" \"libr\" \"lib\" \"lbry\") adjust:1feature:#:\" _MetaTag_Category 11265\"\r\n"

RewrittenQuery から の直前まで全部欲しいadjust。私は次のコードを書きました:

Match extraction = Regex.Match(str, @"RewrittenQuery:[^\n\r]+");    

上記のコードは から開始点を抽出できますがRewrittenQuery、(含む) からのデータは必要ありません。必要なデータadjust を取得するには、上記の正規表現に何を追加すればよいですか?

4

2 に答える 2

0

これを試してください

static void TestRegEx()
{
    string input = "sdsafff RewrittenQuery 1sdfs se1adjust  wer aasdfsd";

    Match m = Regex.Match(input, @"RewrittenQuery(?<A1>.*)adjust");
    if (m.Success)
        Console.WriteLine(m.Groups["A1"]);
    else
        Console.WriteLine("Didn't match");
}

プリント1sdfs se1

正規表現はRewrittenQuery(?<A1>.*)adjustです。パーツ(?<A1>.*)は任意の記号を受け取り、それらを名前A1の付いたグループに配置します。したがって、入力文字列が一致する場合、名前による一致のグループコレクションでこの値を見つけることができます。

于 2013-01-18T07:57:33.090 に答える
0

エンド アンカーの場合はadjust:、次のコードを使用できます。

string pattern = @"(?<Value>RewrittenQuery:[^\n\r]+\s)(?:adjust:)";
RegexOptions regexOptions = RegexOptions.IgnoreCase | RegexOptions.Multiline;
Regex regex = new Regex(pattern, regexOptions);
string targetString = @"RewrittenQuery: Word:(\""state\"" \""states\"" \""state s\"") Word:(\""library\"" \""libraries\"" \""libr\"" \""lib\"" \""lbry\"") adjust:1feature:#:\"" _MetaTag_Category 11265\""\r\n";

foreach (Match match in regex.Matches(targetString))
{
    if (match.Success)
    {
        var value = match.Groups["Value"];
    }
}
于 2013-01-18T08:01:23.303 に答える