我正在尝试替换model => model.Password
中的@Html.DisplayNameFor(model => model.Password)
子字符串。
我使用的正则表达式模板的任何线索?
我试过\\(.+?\\)
这是对的吗?
谢谢!
var match = Regex.Match(view, @"@Html.DisplayNameFor(\\(.+?\\))", RegexOptions.IgnoreCase);
if (match.Success)
{
}
答案 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);