正则表达式在.NET中找到令牌值

时间:2013-06-07 17:52:51

标签: c# .net regex

我需要一些在Regex上比我更好的人的帮助:)

我试图使用.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;
}

任何指针都会受到赞赏。

1 个答案:

答案 0 :(得分:5)

你只是错过了“。”匹配*之前的任何字符。

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

此外,如果您不需要匹配整个表达式,则不需要周围的“()”,因此您可以简化为

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

现在匹配组仅包含示例中的“one”。

如果要匹配同一行中的多个令牌,则需要对其进行扩展,以使一个或多个令牌实例与+运算符匹配

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