正则表达式多个匹配项

本文关键字:正则表达式 | 更新日期: 2023-09-27 18:32:26

我有这个文本,我想从中获取 2 个匹配项,但问题是我总是只得到 1 个匹配项。这是 c# 中的示例代码

string formattedTag = "{Tag 1}::[FORMAT] asdfa {Tag 2}::[FORMAT]";
var tagMatches = Regex.Matches(formattedTag, @"('{.+'}':':'[.+'])");

我希望在这里得到两个匹配"{标签 1}::[格式]"和"{标签 2}::[格式]"但此代码的结果是变量 formattedTag 的实际值。它一定是正则表达式模式中的东西,所以有人可以帮助我弄清楚吗?

我将感谢每一个帮助。提前感谢!

正则表达式多个匹配项

您需要使用以下正则表达式:

('{[^}]+'}':':'[[^]]+'])
您希望匹配字符串

的括号部分中除右括号之外的任何字符,否则将匹配整个字符串,因为正则表达式贪婪并尝试检索最长的匹配项。

  string formattedTag = "{tag 1}::[admin] adfaf{tag 2}::[test.user]";
  var tagMatches = Regex.Matches(formattedTag, @"'{('w+'s*'d{1,2})'}::'[(.*?)']");
  foreach(Match item in tagMatches)[enter image description here][1]{
      Console.WriteLine(item.Groups[0]);
      Console.WriteLine(item.Groups[1] + "=" + item.Groups[2]);
  }