正则表达式多个匹配项
本文关键字:正则表达式 | 更新日期: 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]);
}