我需要一些比我更擅长 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/