此命名组的正则表达式中不会出现预期结果

时间:2013-12-12 08:09:30

标签: c# regex parsing

我有这个模板:

Dear @Model["ClientName"] <br><br>

           Thank you for applying to open an account. Your request for a (@Model["AccountType"]/@Model["Platform"]/@Model["Currency"]) has been sent to our Client team. They are currently reviewing your request.<br><br>

Kind regards,<br>
<a href="mailto:test@example.com">test@example.com</a><br />
+55 00 0000 0000 <br>08:00-18:00 Mon-Fri

并希望用字符串值替换所有@Model["key"]

我有这个正则表达式:

const string pattern = @".*(?<model>@Model\[\u0022(?<key>\w+)\u0022\]).*";
var matches = Regex.Matches(input, pattern, RegexOptions.IgnoreCase);

当我检查匹配集合时,我只找到2,ClientName和Currency。

为什么?我也希望找到AccountType和Platform。

你能帮我辨别出什么问题吗?

1 个答案:

答案 0 :(得分:0)

尝试此匹配模式(之前和之后没有.*):

const string pattern = @"(?<model>@Model\[\u0022(?<key>\w+)\u0022\])";

这会阻止.*贪图吞下整条线,并将其视为一场比赛。