Изменить разделители значений которые внутри кавычек

Тема в разделе "Функции поиск-замены и регулярные выражения", создана пользователем yourock, 1 ноя 2017.

  1. yourock

    yourock New Member Пользователи

    Регистрация:
    1 ноя 2017
    Сообщения:
    3
    Город:
    Екатеринбург
    Есть строка, в которой может быть куча запятых.
    Нужно найти те из них, которые находятся вне кавычек и заменить на точки.

    Было:
    текст1,"текст2","текст,3","текст,,,4",текст 5
    Должно быть
    текст1."текст2"."текст,3"."текст,,,4".текст 5

    Есть регулярка: ,(?=([^"]*"[^"]*")*(?![^"]*"))
    но она работает только в Akelpad'e, не могу её заставить работать в "поиск-замена".
    Прошу помощи.
     
  2. kagorec

    kagorec Администратор Команда форума Администратор

    Регистрация:
    3 янв 2011
    Сообщения:
    4.433
    Адрес:
    Latvia
    Простая замена подходит?
    Код:
    ","|"."
    ,"|."
    ",|".
     
  3. yourock

    yourock New Member Пользователи

    Регистрация:
    1 ноя 2017
    Сообщения:
    3
    Город:
    Екатеринбург
    к сожалению нет, т.к. есть запятые вне кавычек
    пример текста (кусок ответа json)
    "0100-020_z02.jpg", "0100-020_z02", 1, "Кисть флейцевая DEXX @ПРАКТИК@, деревянная ручка, натуральная щетина, индивидуальная упаковка, 20мм", "DEXX", 244, 7.16, "20 шт ", 20, 1400, "Штукатурно-малярный инструмент", "58783", 0, 1, 3, null

    надо все запятые вне кавычек заменить на [CSVCS], чтобы расположить данные по столбцам
     
  4. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Здравствуйте.

    Не все там так просто. Также вы не учли заэкранированные символы контейнеров ячеек (в тексте ячеек).

    Замените файл Content Downloader.exe в папке с программой этим файлом:
    Скрытое содержимое:
    **Скрытое содержимое: доступно при наличии 1 постов.**
    Используйте такое правило поиск-замены для решения подобных задач:
    2017-11-01_17-20-50.png
     
    kagorec нравится это.
  5. kagorec

    kagorec Администратор Команда форума Администратор

    Регистрация:
    3 янв 2011
    Сообщения:
    4.433
    Адрес:
    Latvia
    Решение хорошо подходит к тому примеру что указали в первом посте.
    Второй пример уже совсем другой к тому же стоит учитывать что внутри контейнера может находиться значение с кавычками которые экранируются, например
    ... , "Кисть флейцевая DEXX ""ПРАКТИК"", деревянная ручка, натуральная щетина, индивидуальная упаковка, 20мм", " ...

    В данном случае корректный результат получите только используя решение от уважаемого Root (пост выше)
     
    Root нравится это.

Поделиться этой страницей