2009-08-28 3 views
0

* 정규 표현식 (ERE)을 지원하는 * NIX 시스템 및 언어에서 훌륭하게 작동하는 RegEx를 얻었습니다. ERE를 지원하는 .NET 용 자유롭게 사용할 수있는 라이브러리를 찾지 못했습니다. 또한 이것을 비 ERE로 변환하고 동일한 결과를 얻으려는 행운이 없었습니다.확장 정규 표현식을 .NET 호환으로 변환 RegEx

^\+(<{7} \.|={7}$|>{7} \.) 

배경 : 다음은 정규식 정규식의 포인트는 주어진 문자열이 해결되지 않은 서브 버전 병합에서 마커가 나타나는 경우 확인하는 것입니다.

답변

0

오타가 없습니까? RegexBuddy (POSIX ERE 또는 GNU ERE로 설정된 경우) "+"한정 기호 앞에는 반복 할 수있는 토큰이 와야한다고 나와 있습니다. 그 외, 이것은 유효한 .NET Regex 인 것 같습니다. 정규 표현식에 대한 훌륭한 O'Reilly 서적 중 하나를 확인해 볼 수 있습니다. 이 방법이 도움이되지 않는다면 일치/일치하지 않는 텍스트의 예를 게시하십시오.

+0

오타가 아닙니다. OP는 코드 형식을 사용하지 않았으므로 SO 소프트웨어가 일부 문자를 먹었습니다. –

3

It looks to me 같은 ERE 구문은 Perl, PHP, Python, JavaScript, Ruby, Java ...와 같은 다른 "Perl 호환"기능을 사용하기 때문에 .NET의 정규 표현식과 대부분 상향 호환됩니다. 즉, 당신이 ERE 정규 표현식에서 할 수있는 모든 것은 똑같은 .NET 정규식에서 할 수 있어야합니다. 물론 당신의 예 :

^\+(<{7} \.|={7}$|>{7} \.) 

은 ERE에서와 같은 의미입니다. 내가 볼 수있는 유일한 예외는 POSIX bracket expressions입니다. .NET은 유니 코드 표준을 대신합니다.

에 가면에 실제로 적용되는 정규식이 적용됩니다. C#에서이 같은 그 정규식을 적용 할 수 있습니다

string result = Regex.Match(targetString, @"^\+(<{7} \.|={7}$|>{7} \.)").Value; 

C#의 그대로 문자열 일부 다른 언어처럼 백 슬래시를 이스케이프 할 필요가 저장 '문자열 리터럴; 따옴표를 두 번 눌러서 탈출하면됩니다.

@"He said, ""Look out!"""; 

이 질문에 대한 답변은 있습니까?

+0

그 대답은 아니지만 새로운 것을 배웠습니다. C#이 따옴표를 이스케이프하는 이중 인용 방법을 사용한다는 것을 깨닫지 못했습니다. "@"를 사용하여 문자열 리터럴을 선언했습니다. –

관련 문제