2014-02-24 3 views
1

으로 분할하고 계속하기 전에 이미 제공된 JSON 클래스를 알고 있습니다. 이것은 내 자신의 학습을위한 것입니다.JSON을 배열

저는 오늘 정규 표현식을 연습하고 있었는데 왜 이것이 컬렉션으로 분리되거나 일치하지 않는지 궁금했습니다.

(s?)(?<=""\d+"":{).+(?=football.*) 

    { 
    "100":{ 
     "username":"j123", 
     "id":10, 
     "date":2014, 
     "user":{ 
     "name":"John s", 
     }, 
     "game":{ 
     "football":33 
     } 
    }, 
    "101":{ 
     "username":"j456", 
     "id":11, 
     "date":2014, 
     "user":{ 
     "name":"John t", 
     }, 
     "game":{ 
     "football":32 
     } 
    } 
    } 
}# 

일부 사람이 친절하게 내가 어디로 잘못 가고 있는지 설명 할 수 있습니다. 그 사이의 축구 경기 결과는 필요 없다.

감사

+0

우선 lookbehind는 다음과 같이 변수 너비가 될 수 없습니다.'(? <= ""\ d + "": {)'. \ d' +'한정 기호는 허용되지 않습니다. 그리고 큰 따옴표? '(s?)'도 무엇입니까? '(\ s?)'을 의미 했습니까? – MElliott

+0

@MElliott : 아니요. .NET 정규 표현식은 lookbehind 어설 션 내에서 무기한 반복을 허용합니다. –

+0

@TimPietzcker, 오, 알았어. 알았어 고마워. :) – MElliott

답변

0

+욕심 정량, 그래서 "100"에서 최종 "football":32에 가능한 한 많은 문자 .+ 일치.

한정 기호를 게으름 (.+?)으로 지정하면 가능한 한 빨리 일치를 종료하도록 정규식 엔진에 지시합니다.

(그리고 아마도 도트가 개행과 일치하도록하려면 (?s)을 의미 할 것입니다.)

+0

게으른 일하는, 그리고 오타 typo 함께? 감사합니다 얘들 아. –

관련 문제