4

私よりも正規表現が得意な人からの助けが必要です:)

.NET (C#) を使用して、文字列内の特定のトークンの値を見つけようとしています。

私が持っている文字列には、このようなトークンがあります{token:one}

私が持っている機能は次のとおりです。

public static ArrayList GetMatches(string szInput)
{
    // Example string
    // Lorem ipsum {token:me} lala this {token:other} other stuff
    ArrayList aResults = new ArrayList();
    string szPattern = @"(\{token:(*)\})";

    foreach (Match match in Regex.Matches(szInput, szPattern))
    {
        aResults.Add(match.Value);
    }
    // It should contain me and other
    return aResults;
}

どんなポインタでも大歓迎です。

4

1 に答える 1

8

「。」が欠けているだけです。の前の任意の文字に一致します*

string szPattern = @"(\{token:(.*)\})";

また、式全体を一致させる必要がない場合は、周囲の「()」は必要ないため、次のように簡略化できます。

string szPattern = @"\{token:(.*)\}";

一致するグループには、例の「1」のみが含まれるようになりました。

同じ行で複数のトークンを一致させたい場合は、+演算子を使用して 1 つ以上のトークン インスタンスと一致するように拡張する必要があります。

string szPattern = @"(\{token:(.*?)\})+";
于 2013-06-07T17:55:09.217 に答える