2014-02-24 145 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

首先,lookbehinds不能是可变宽度,如下所示:'(?<=“”\ d +“”:{)'。 \ d' +'量词是不允许的。和双引号?还有什么是'(s?)'?你的意思是(\ s?)'。 – MElliott

+0

@MElliott:不,.NET正则表达式在lookbehind断言中允许不确定的重复。 –

+0

@TimPietzcker,哦,好吧,不知道。好,谢谢。 :) – MElliott

回答

0

+贪婪量词,所以.+比赛尽可能多的字符可能,从"100"到最终"football":32

通过让量词懒惰.+?)您告诉正则表达式引擎尽早结束匹配。

(你可能意思是(?s)允许点匹配换行符)。

+0

懒惰的工作,并opps错误与?s谢谢家伙 –