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:(.*)\}";

现在匹配组仅包含您示例中的“一个”。

如果要在同一行中匹配多个标记,则需要对其进行扩展以将一个或多个标记实例与+运算符匹配

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