c# - 正则表达式在 .NET 中查找标记值

标签 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;
}

如有任何指点,我们将不胜感激。

最佳答案

您只是缺少“.”匹配 * 之前的任何字符。

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

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

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

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

如果您想匹配同一行中的多个标记,您需要扩展它以使用 + 运算符匹配一个或多个标记实例

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

关于c# - 正则表达式在 .NET 中查找标记值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16990148/

相关文章:

c# - LINQ Select - CS0411 无法从用法中推断出类型参数 - 我做错了什么?

c# - Windows 工具栏可停靠应用程序

php - 使用 preg_replace 突出显示带重音的搜索词

c# - ajax回发后html控件消失

c# - 如何取消订阅使用 lambda 表达式的事件?

c# - ZedGraph 垂直线与 LineObj 问题

c# - .Net Bing Map SOAP 服务限制

Java正则表达式用点替换css类字符串中的空格

python - 如何将我的 'split' 代码转换为正则表达式

c# - dotnet 构建应用程序部署