我正在尝试model => model.Password 替换@Html.DisplayNameFor(model => model.Password).
任何线索我用过哪个正则表达式模板?
我试过\\(.+?\\) 这是正确的吗?
谢谢!
var match = Regex.Match(view, @"@Html.DisplayNameFor(\\(.+?\\))", RegexOptions.IgnoreCase);
if (match.Success)
{
}
模式应该更像:
@"@Html\.DisplayNameFor\((.+?)\)"
由于您已经在使用逐字字符串 ( @""),因此您不应该包含双反斜杠。此外,.应该已经转义了,我调整了分组括号以匹配model => model.Password而不是(model => model.Password).
如果您尝试替换,您可能只想Regex.Replace直接使用而不是先使用Match它。
问题出在这句话中:
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);