我正在尝试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);