1

我正在尝试model => model.Password 替换@Html.DisplayNameFor(model => model.Password).

任何线索我用过哪个正则表达式模板?

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

谢谢!

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

}
4

2 回答 2

2

模式应该更像:

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

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

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

于 2012-10-13T02:36:41.723 回答
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);
于 2012-10-13T03:03:17.817 回答