2012-10-13 4 views
1

부분 문자열을 @Html.DisplayNameFor(model => model.Password)으로 바꾸려고합니다.Regex help need

내가 사용하는 정규식 템플릿에 대한 단서가 있습니까?

시도했습니다 \\(.+?\\)이 맞습니까?

감사합니다.

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

} 

답변

2

패턴은 더 같이해야한다 :

이미 그대로 문자열 ( @"")를 사용하고 있기 때문에
@"@Html\.DisplayNameFor\((.+?)\)" 

, 당신은 이중 백 슬래시를 포함하지 말았어야. 또한 .이 이스케이프되어야하며 (model => model.Password) 대신 model => model.Password과 일치하도록 그룹화 괄호를 조정했습니다.

교체하려는 경우 먼저 Match 대신 직접 Regex.Replace을 사용하는 것이 좋습니다.

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