Как я могу написать регулярное выражение, чтобы извлечь только цифры с определенной строкой, предшествующей им? - PullRequest
0 голосов
/ 25 января 2011

У меня есть строка (которая содержит JSON):

[{"type":[236]} , {"type":[2]} , {"type":[95]}, {"other":[33]}, {"other":[44]}]

Я хочу использовать регулярное выражение для извлечения только чисел ТИПА, чтобы на выходе была следующая строка:

[236 , 2 , 95]

Как я могу это сделать?

Ответы [ 3 ]

6 голосов
/ 25 января 2011

Почему вы специально хотите регулярное выражение? Если ввод JSON, я бы использовал JSON-парсер для обработки этого. Он будет построен специально для разбора вышеупомянутого и обработки краевых случаев и т. Д.

5 голосов
/ 25 января 2011

Почему бы не проанализировать его с помощью JSON-парсера , а затем извлечь из полученной структуры все значения, указывающие на type ключи? Использование регулярного выражения для разбора текста в определенном формате, таком как JSON, - это хороший способ сойти с ума .

3 голосов
/ 25 января 2011

Вы могли бы сделать это с помощью регулярного выражения, но гораздо лучше было бы использовать JSON-парсер :

  • Возможно, в вашем коде яснее, что выработа с JSON, если вы используете выделенный анализатор JSON (сами по себе регулярные выражения могут быть довольно загадочными)
  • Это будет чертовски много проще в использовании
  • Это будет намногоболее надежным, особенно в угловых случаях, когда регулярное выражение может упасть (правильно реализованный синтаксический анализатор JSON должен правильно обрабатывать все случаи).

Так что да, вы могли бы, вероятно, собрать это регулярное выражение, ноучитывая тот факт, что есть всеобъемлющий JSON-анализатор (тот, на который я ссылаюсь), доступный бесплатно, нет смысла делать это способом regex.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...