2013-10-29 5 views
2

편집 : @Heinzi https://stackoverflow.com/a/1731641/87698C# 정규식, 참조 문자열에 의해 추출 문자열


에 의한 해결은 내가이 예를 someText-test-stringSomeMoreText?에 대한 문자열이 하나 {0}test-string{1}? 같은 패턴 캐릭터의 어떤 종류를 얻었다.

두 번째 문자열의 자리 표시 자 위치와 일치하는 부분 문자열을 첫 번째 문자열에서 추출하려고합니다.

결과 하위 문자열은 someText-SomeMoreText이어야합니다.

Regex.Split("someText-test-stringSomeMoreText?", "[.]*test-string[.]*\?"으로 추출하려고했습니다. 그러나 이것은 작동하지 않습니다. 당신이

나는 누군가가 다른 생각을 갖고 희망을 ...

+2

이유 'Regex.Split (input, "test-string")' – Anirudha

+1

프레임 워크에는 아무것도 내장되어 있지 않지만 누군가가 이미 알 고를 구현했습니다. 그것을 할 rithm : http://stackoverflow.com/a/1731641/87698 – Heinzi

+0

가능한 복제본 [구문 분석 된 문자열] (http://stackoverflow.com/questions/1410012/parsing-formatted-string) – Heinzi

답변

0

하나의 옵션은 명명 된 그룹을 사용하는 것입니다

(?<prefix>.*)test-string(?<suffix>.*)\? 

이가 원하는 접두사와 접미사를 포함하는 2 개 그룹을 반환합니다.

var match = Regex.Match("someText-test-stringSomeMoreText?", 
    @"(?<prefix>.*)test-string(?<suffix>.*)\?"); 
Console.WriteLine(match.Groups["prefix"]); 
Console.WriteLine(match.Groups["suffix"]); 
+0

문제는 두 입력 문자열이 완전히 가변적이라는 것입니다. 두 번째 문자열은'{0} test {1} stringSome {2} Text? '처럼 보일 수도 있습니다. 문제는이 의사 패턴 문자열 dynamicaly에서 작동하는 정규식 패턴을 만드는 방법을 찾고 있습니다. – Matthias

0

나는 적어도 역동적 인 해결책을 가지고있다.

먼저 나는 그럼 난 string[] inputElements = inputString.Split(patternElements, StringSplitOptions.RemoveEmptyEntries);

으로 입력 문자열 someText-test-stringSomeMoreText?을 침 string[] patternElements = Regex.Split(inputPattern, @"(\\\{[a-zA-Z0-9]*\})");

와 패턴 문자열 {0}test-string{1}?을 분할 이제 inputElements는 자리에 해당하는 텍스트 조각입니다 {0},{1},...