2012-10-13 137 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);