c#正则表达式如何在字符串中找到两条记录

本文关键字:记录 两条 正则表达式 字符串 | 更新日期: 2023-09-27 18:12:09

好的,我正在建立我的电子邮件模板引擎,并试图打破一些文本之间的{{{}}}}从我的这个文本

 var matches = Regex.Matches("sdfsdfsdf{{{GetServices:Pilotage}}}sdfsdfsdf dfsdf{{{GetServices:Berth Fee}}}sdfdsf{{sss", "{{{(.*)}}}");

我如何解析这个字符串,使我得到这个结果数组。我一直在尝试不同的方法,但都无济于事。我怎样才能做到这一点呢

1)GetServices:Pilotage
2)GetServices:Berth Fee

c#正则表达式如何在字符串中找到两条记录

你的尝试(虽然可能不是最佳的)应该工作,如果你强迫它是非贪婪的:

{{{(.*?)}}}

*后面加一个?

使用Grouping检索匹配项。

var input = "sdfsdfsdf{{{GetServices:Pilotage}}}sdfsdfsdf dfsdf{{{GetServices:Berth Fee}}}sdfdsf{{sss'", '"{{{(.*)}}}";
var matches = Regex.Matches(input, "''{''{''{(GetServices:[^{]*)''}''}''}");
var result = new List<string>();
foreach (Match match in matches)
{
    if (match.Groups.Count == 2)
    {
        result.Add(match.Groups[1].ToString());
    }
}

你可以试试这个regex:

('{{3}'w*':['w' ]*'}{3})+

编辑:

取值参见answer:查找字符串

中的每个RegEx匹配项

模式为"'{{3}(.+?)'}{3}""'{{3}(.*?)'}{3}"。这取决于你的需要,中间的字符串是可选的还是必需的