2016-08-03 1 views
1

나는 정규 표현식를 사용하여 문자열의를 수집 {값을} 싶어.추출 값은

가 lorem ipsum의 {필드 1}가 lorem ipsum의 {FIELD2} 로렘 입숨 필드 1 로렘 입숨 FIELD2 {{FIELD3}}

내가 얻을 것 : {field1} and {field2}

I 예를 들어

이것을 시도하십시오 :

string pattern [email protected]"\[(?>[^\{\}]+)*\]"; 

MatchCollection matches = Regex.Matches(text, pattern); 
for (int ctr = 0; ctr < matches.Count; ctr++) 
{ 
    string field = matches[ctr].Value; 
    // ... ommitted... 
} 

어떤 제안이 있습니까?

답변

3

당신이 바로 그 후 앞에 { 또는 }이없는 것과 {...} 문자열을 얻을에만 부정적인 lookarounds를 사용할 수 있습니다

(?<!{){[^{}]+}(?!}) 

regex demo

enter image description here

  • (?<!{)를 참조 -이있는 경우 일치하지 않는 음수 lookbehind 리터럴 {
  • [^{}]+ - - {
  • }} 이외의 하나 이상의 심볼 - 현재 위치
  • { 전에 31,813,리터럴 }
  • (?!}) - 경기를 이루지 못하는 부정적 예측은 }가 있는지 이전 } 직후.
+0

'{val1}}'및 '{{val2}'와 같은 값을 일치 시키려면 다음과 같이 바꾸어야합니다.'(?