2012-11-28 3 views
3

의 끝 교체. - 둘 다없는 경우에만정규 표현식은 다음과 같은 입력을 고려 시작 문자열

private const string Pattern = "(^guid'|'$)"; 
private static readonly Regex myRegex = new Regex(Pattern, RegexOptions.Compiled | RegexOptions.CultureInvariant | RegexOptions.ExplicitCapture | RegexOptions.Singleline | RegexOptions.IgnoreCase); 
var newValue = myRegex.Replace(input, string.empty); 

그러나 불행하게도 그 중 하나를 일치 :

(^BEGIN|END$) 

다음 내 문자열 교체를 수행하려면 다음 C# 코드를 사용 :

나는 지금까지 같이있어 .

는 또한 시도 :

^BEGIN.+END$ 

하지만 그 전체 문자열을 캡처하고 그래서 전체 문자열이 대체됩니다.

내 정규 표현식 지식에 관한 한 그 정도입니다.

도움말!

답변

5

어떻게 사용에 대한 :

^BEGIN(.*)END$ 

을 그리고 그 사이였다 단지 부분 전체 문자열 대체 : 간단하게

var match = myRegex.Match(input); 
var newValue = match.Success ? match.Groups(1).Value : input; 
1

정규식을 구문 분석 엔진으로 사용할 수 없습니다. 그러나, 당신은 단지 그것의 머리에 플립 당신이 사이에 무엇을 원하는 말할 수 있습니다 : 그럼, 단지 1

4

나는 당신이 정말로 여기에 정규식을 필요가 있다고 생각하지 않는 그룹에 무엇을 잡아

begin(.*)end 

. 그냥 같은 시도 : 사용자 코드에서

if (str.StartsWith("BEGIN") && str.EndsWith("END")) 
    str = "myreplaceBegin" + str.Substring(5, str.Length - 8) + "myreplaceEnd"; 

을 그냥 시작과 끝 부분을 (아무것도로 대체되지 않음) 제거 하려는처럼, 당신이 다만 수 있도록 같습니다

if (str.StartsWith("BEGIN") && str.EndsWith("END")) 
    str = str.Substring(5, str.Length - 8); 

물론 인덱스를 제거하려는 실제 길이로 바꾸십시오.

+0

일을 ... –