正则表达式:括号内的匹配数字

时间:2013-12-19 01:59:40

标签: regex regex-lookarounds

好的,这是我收到的文字的一个例子

"data": [
  {
     "post_id": "164902600239452_10202071734744222",
     "actor_id": 164902600239452,
     "target_id": null,
     "likes": {
        "href": "https://www.facebook.com/browse/likes/?id=10202071734744222",
        "count": 2,
        "sample": [
       678063648,
       100000551340876,
       100000805495404,
       100000905843684,
        ],
        "friends": [

        ],
        "user_likes": false,
        "can_like": true
     },
     "comments": {
        "can_remove": false,
        "can_post": true,
        "count": 0,
        "comment_list": [

        ]
     },
     "message": "Down to the FINAL 3 SEATS for It Factor LIVE 2013... WHO will snag them before we close registration on October 15th???\n\nLearn more now at http://www.ItFactorLIVE.com/"
  }, ]

我想只匹配“示例”后括号内的数字:

            "sample": [
       678063648,
       100000551340876,
       100000805495404,
       100000905843684,
        ],

所以我最终得到了这个

           678063648
           100000551340876
           100000805495404
           100000905843684

有人可以帮助我使用正确的正则表达式来实现这一目标吗?

2 个答案:

答案 0 :(得分:1)

好的 - 我已经查看了@hwnd建议的解决方案,以及您为“真实”数据提供的链接,并提出了以下建议:

\d+(?=,*\s+(?:\d|\]))

您可以在http://regex101.com/r/pL3gW2看到这与样本中方括号内的每个数字字符串相匹配。

@ hwnd解决方案的主要区别是在*之后添加了,,使得数字后面的逗号可选:这允许表达式在关闭之前匹配最后一组数字]。没有它,匹配会跳过括号内的最后一个数字。

之前曾说过:几乎所有语言/平台都有强大的JSON解析器。看看他们。

答案 1 :(得分:0)

看看这是否适合你 pattern = (\d+)(?=(?:(?!\[).)*\]) Demo