2013-12-19 4 views
0

Ok вот пример текста я получилRegex: Совпадение Числа внутри кронштейна

"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

Это выглядит как работа для парсера JSON, а не регулярное выражение. В частности, я не знаю никакой реализации регулярного выражения, которая допускает переменные длины lookbehinds, которые (если я не ошибаюсь) - это то, что вам нужно было бы решить так, как вы думаете. – Amadan

+0

Согласитесь с комментарием JSON - но не '/ \ [(?: (\ D +) [^ \ d]) \]/g' трюк? – Floris

+0

Это все одна строка, или вы хотите обрабатывать эту строку за раз? Возможное решение на http://regex101.com/r/xQ6bN5 – Floris

ответ

1

OK - Я посмотрел на решении, которое @hwnd предложил, а также ссылку вы дали на «реальные» данные, и пришел со следующим:

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

Вы можете увидеть на http://regex101.com/r/pL3gW2, что соответствует каждой строке цифр в образце, который находится внутри квадратных скобок.

Основное различие с решением @ HWND было добавлением * после ,, делая запятую после цифр необязательной: это позволяет выражение совпадало последний набор цифр перед закрытием ]. Без него совпадение пропустило последнее число внутри скобок.

Ранее было сказано: есть сильные парсеры JSON, доступные практически на любом языке/платформе. Посмотрите на них.

0

посмотреть, если это работает для вас шаблона = (\d+)(?=(?:(?!\[).)*\])Demo

Смежные вопросы