2013-06-29 2 views
8

전에 정규식을 사용한 적이 없습니다. 나는 포럼에서 비슷한 질문을보기 위해 아벨 이었지만 정확히 무엇을 찾고 있지 않은가?중괄호 사이에 값 가져 오기 C#

다음과 같은 문자열이있다.

예 중괄호 사이의 값을 얻을 필요가 : "{name}{[email protected]}"

그리고 난 다음 갈라 문자열을 얻을 필요가있다.

이름과 [email protected]

나는 다음을 시도하고 같은 문자열을 나에게 다시 제공합니다. 여기

string s = "{name}{[email protected]}"; 
string pattern = "({})"; 
string[] result = Regex.Split(s, pattern); 
+0

이/정규식 패턴을 생성 정규식 HTTP 학습을위한 아주 좋은 도구입니다 : // gskinner.com/RegExr/ –

답변

16

이동? 이 특정 예제에서 내가 작성합니다

s.Split(new char[] { '{', '}' }, StringSplitOptions.RemoveEmptyEntries) 
+0

@FabianBigler 정규식이 쉽게이 문제를 해결할 수 있다는 인상하에 있었기 때문에 Regex를 제목에 포함 시켰습니다. :) – Kurubaran

+0

제안 된 솔루션이 'string s = "}name {[email protected]";'같은 올바른 문자열을 사용하지 않겠습니까? – Josep

+0

너무 빠른 투표 ...이 솔루션은 답변을 제공하지 않습니다. 입력 문자열을 고려해보십시오. {name}blabla{[email protected]}, 배열에 "blabla"도 표시됩니다 ... – Jurion

0

당신은해야 정규식을 사용

string s = "{name}{[email protected]}"; 
s = s.Substring(1, s.Length - 2);// remove first and last characters 
string pattern = "}{";// split pattern "}{" 
string[] result = Regex.Split(s, pattern); 

또는

string s = "{name}{[email protected]}"; 
s = s.TrimStart('{'); 
s = s.TrimEnd('}'); 
string pattern = "}{"; 
string[] result = Regex.Split(s, pattern); 
+0

작동하지만 하위 문자열을 사용하지 않고 정규식 패턴을 사용하는 경우에만이 결과를 얻을 수있는 방법이 있습니까? – Kurubaran

+0

substring없이 –

+0

없이 답안 방법 2를 업데이트했습니다. 다른 문자열 조작을하지 않고 정규식 패턴으로 만 rsult를 얻는 것이 있다면 궁금합니다. – Kurubaran

23

사용 Regex보다는 SplitMatches을 쉽게이를 위해 :

string input = "{name}{[email protected]}"; 
var regex = new Regex("{.*?}"); 
var matches = regex.Matches(input); //your matches: name, [email protected] 
foreach (var match in matches) // e.g. you can loop through your matches like this 
{ 
    //yourmatch 
} 
+0

Up이 답변에 투표 : – Kurubaran

+0

@Coder Ok cheers! –