好的我正在构建我的电子邮件模板引擎并试图在我的文本中分解{{{}}}之间的部分文字
var matches = Regex.Matches("sdfsdfsdf{{{GetServices:Pilotage}}}sdfsdfsdf dfsdf{{{GetServices:Berth Fee}}}sdfdsf{{sss", "{{{(.*)}}}");
我如何解析这个字符串,所以我得到这个结果数组。我一直在尝试不同的东西,但无济于事。我怎么能实现这个
1)GetServices:Pilotage
2)GetServices:Berth Fee
答案 0 :(得分:3)
如果你强迫它不贪婪,你的尝试(尽管可能不是最佳的)应该有效:
{{{(.*?)}}}
只需在?
之后添加*
。
答案 1 :(得分:1)
使用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());
}
}
答案 2 :(得分:0)
答案 3 :(得分:0)
模式为"\{{3}(.+?)\}{3}"
或"\{{3}(.*?)\}{3}"
。如果中间的字符串是可选的或必需的,则取决于您的需要。