正则表达式帮助需要

时间:2012-10-13 02:33:10

标签: c# .net regex

我正在尝试替换model => model.Password中的@Html.DisplayNameFor(model => model.Password)子字符串。

我使用的正则表达式模板的任何线索?

我试过\\(.+?\\)这是对的吗?

谢谢!

var match = Regex.Match(view, @"@Html.DisplayNameFor(\\(.+?\\))", RegexOptions.IgnoreCase);
if (match.Success)
{

}

2 个答案:

答案 0 :(得分:2)

模式应该更像:

@"@Html\.DisplayNameFor\((.+?)\)"

由于您已经使用了逐字字符串(@""),因此您不应该包含双反斜杠。另外,.应该已被转义,我将分组数量调整为匹配model => model.Password而不是(model => model.Password)

如果您尝试更换,可能只想直接使用Regex.Replace而不是Match

答案 1 :(得分:1)

问题出在这句话中:

var match = Regex.Match(view, @"@Html.DisplayNameFor(\\(.+?\\))", 
RegexOptions.IgnoreCase);

您在正则表达式模式之前使用@来转义所有字符。在这种情况下,使用另一个"\"不必再次逃避您的模式。所以,这段代码应该更像:

var match = Regex.Match(view, @"@Html.DisplayNameFor(\(.+?\))",
RegexOptions.IgnoreCase);

或者您可以删除@以继续使用双斜杠:

var match = Regex.Match(view, "@Html.DisplayNameFor(\\(.+?\\))",
RegexOptions.IgnoreCase);