Squeak.ru - шаблоны программирования

Нужна помощь с действительно простым регулярным выражением

Я использую PHP для соответствия следующему типу данных:

[["1200","135"],["127","13"]]

Я хочу извлечь все числа в отдельный массив таких массивов:

array(array(1200,135),array(127,13));

Я использую preg_match для захвата элементов, но пока я даже не могу сопоставить их с правилом. Я буду рад, если кто-нибудь поможет мне исправить мое правило или даже предложит решение, как это сделать.

Мое правило регулярного выражения: / ^[ ([" (\d+) "," (\d+) "])*(,)* ]$ /

Я не экранировал его, чтобы сделать его более читаемым на этом форуме. Однако это не работает. Пожалуйста помоги

24.06.2010

  • Тем не менее, как мне проверить, соответствуют ли приведенные данные синтаксису? Я имею в виду, если кто-то вводит запятую или дополнительную сиротскую квадратную скобку [как я могу проверить это с помощью регулярного выражения? 25.06.2010
  • Вы не знаете. Зачем? Если это строка JSON, просто запустите ее через json_decode, и если она не вернет NULL, значит, она действительна. 25.06.2010
  • Хорошо, но не могли бы вы сказать мне, что не так с моим регулярным выражением? 25.06.2010
  • Регулярные выражения, как правило, не лучший инструмент для обработки вложенных структур... распознавание совпадающих круглых скобок является классическим примером задачи, которую невозможно выполнить с помощью (чистых) регулярных выражений. Многие языки программирования расширяют чистые регулярные выражения таким образом, что позволяют им распознавать контекстно-свободные или более сложные языки, но даже в этом случае использование более мощного метода синтаксического анализа может избавить от изжоги и головной боли. 25.06.2010
  • не могли бы вы просмотреть ответы на этот и ваши предыдущие вопросы и либо принять наиболее полезные, либо отредактировать свои вопросы, чтобы указать, почему ни один из ответов не решает ваш вопрос. Спасибо. 01.11.2010

Ответы:


1

Пытаться

var_dump( json_decode('[["1200","135"],["127","13"]]') );

дает:

array(2) {
  [0]=> array(2) {
    [0]=> string(4) "1200"
    [1]=> string(3) "135"
  }
  [1]=> array(2) {
    [0]=> string(3) "127"
    [1]=> string(2) "13"
  }
}

См. Руководство по PHP:

  • json_decode — декодирует строку JSON.
24.06.2010

2

Несколько ошибок в вашем регулярном выражении: использование начальных и конечных якорей (^ и $) и отсутствие экранирования квадратных скобок.

Но используйте json_decode(), для этого он и нужен.

24.06.2010

3

Вполне легко:

  $proper = '[["1200","135"],["127","13"]]';
  $nuked = '[["1200",,"135"],[["127","13"]]';
  $pattern = '/[["[0-9]*","[0-9]*"],["[0-9]*?","[0-9]*"]]/s';
  echo "proper: ". preg_match($pattern, $proper);
  echo "<br>";
  echo "nuked: ". preg_match($pattern, $nuked);

Выходы:

proper: 1
nuked: 0

В значительной степени он должен выглядеть точно так, как вы его дали, за исключением того, что данные между " могут измениться. Я надеюсь, это то, что вы хотели?

24.06.2010
  • Согласно этому регулярному выражению, эта строка имеет правильный формат: ",""],[",""]] 25.06.2010
  • Похоже, что да, я действительно не проверял это так сильно, поскольку предпочитаю избегать регулярных выражений, поскольку это кажется действительно неэлегантным решением любой проблемы. 25.06.2010

  • 4

    Кажется, вы обрабатываете JSON, поэтому используйте декодирование json, например:

    php > print_r(json_decode('[["1200","135"],["127","13"]]'));
    Array
    (
        [0] => Array
            (
                [0] => 1200
                [1] => 135
            )
    
        [1] => Array
            (
                [0] => 127
                [1] => 13
            )
    
    )
    
    24.06.2010
    Новые материалы

    Угловая структура архитектуры
    Обратите внимание, что эта статья устарела, я решил создать новую с лучшей структурой и с учетом автономных компонентов: https://medium.com/@marekpanti/angular-standalone-architecture-b645edd0d54a..

    «Данные, которые большинство людей используют для обучения своих моделей искусственного интеллекта, поставляются со встроенным…
    Первоначально опубликовано HalkTalks: https://hacktown.com.br/blog/blog/os-dados-que-a-maioria-das-pessoas-usa-para-treinar-seus-modelos-de-inteligencia-artificial- ja-vem-com-um-vies-embutido/..

    Сильный ИИ против слабого ИИ: различия парадигм искусственного интеллекта
    В последние годы изучению и развитию искусственного интеллекта (ИИ) уделяется большое внимание и прогресс. Сильный ИИ и Слабый ИИ — две основные парадигмы в области искусственного интеллекта...

    Правильный способ добавить Firebase в ваш проект React с помощью React Hooks
    React + Firebase - это мощная комбинация для быстрого и безопасного создания приложений, от проверки концепции до массового производства. Раньше (знаете, несколько месяцев назад) добавление..

    Создайте API с помощью Python FastAPI
    Создание API с помощью Python становится очень простым при использовании пакета FastAPI. После установки и импорта вы можете создать приложение FastAPI и указать несколько конечных точек. Каждой..

    Веселье с прокси-сервером JavaScript
    Прокси-серверы JavaScript — это чистый сахар, если вы хотите создать некоторую общую логику в своих приложениях, чтобы облегчить себе жизнь. Вот один пример: Связь клиент-сервер Мы..

    Получить бесплатный хостинг для разработчиков | Разместите свой сайт за несколько шагов 🔥
    Статические веб-сайты — это веб-страницы с фиксированным содержанием и его постоянным содержанием. Но теперь статические сайты также обрабатывают динамические данные с помощью API и запросов...