2012-10-13 57 views
1

我试图在@Html.DisplayNameFor(model => model.Password)内替换model => model.Password子字符串。正则表达式帮助需要

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

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

谢谢!

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

} 

回答

2

模式应该更像:

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

既然你已经在使用原义字符串(@""),你不应该包括双反斜线。此外,.应该已被转义,并且我调整了分组配对以匹配model => model.Password而不是(model => model.Password)

如果您尝试更换,您可能需要直接使用Regex.Replace而不是第一个Match

+0

这是真棒兄弟! +100 –

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);