Помогите поправить регулярку

Тема в разделе "Регулярные выражения", создана пользователем jon4god, 28 июн 2019.

XEvil 4.0 Релиз Состоялся!
  1. cheapsms

    cheapsms Создатель

    Регистр.:
    1 янв 2018
    Сообщения:
    4
    Симпатии:
    0
    ты в след раз пробуй через regex101
     
  2. TREVERS

    TREVERS

    Регистр.:
    1 мар 2010
    Сообщения:
    188
    Симпатии:
    128
    доброго дня всем
    чтоб не флудить отпишу в этой ветке
    есть варианты строк, пример

    =05,-36.0,-36.0,-35.0,-63.0,-45.0,-36.0,
    =05,-9.2,-9.2Ю,-11.0,-12.0,-32.0,-14.0,
    =05,10.0,11.0,12.0,24.0,31.0,32.0,

    то есть в массиве могут быть отрицательные/положительные числа с десятыми до одной цифры после запятой
    мне надо произвести замену в этих строках на такой вариант

    =05,-36.0,/,-,-63.0,-45.0,-,
    =05,-9.2,/,-,-12.0,-32.0,-,
    =05,10.0,/,-,24.0,31.0,-,

    в строках заменяется второе, третье и шестое число на символы : /, -, -,

    с самими числами как бы определился в regex это выглядит так -

    ^=05,(\-)?\d+(\.\d)?,(\-)?\d+(\.\d)?,(\-)?\d+(\.\d)?,(\-)?\d+(\.\d)?,(\-)?\d+(\.\d)?,(\-)?\d+(\.\d)?,$

    но застрял вот на строке со значением где присутствует русская буква "Ю" ? как её добавить в регулярное значение?
    но и так же с заменой не получается решить вопрос
    делал так, но не помогает/не работает -

    ^=05,(\-)?\d+(\.\d)?,s/(\-)?\d+(\.\d)?/\//,s/(\-)?\d+(\.\d)?/\-/,(\-)?\d+(\.\d)?,(\-)?\d+(\.\d)?,s/(\-)?\d+(\.\d)?/\-/,$

    помогите поправить пожалуйста
     
  3. lag

    lag

    Регистр.:
    13 окт 2014
    Сообщения:
    288
    Симпатии:
    356
    PHP:
    $str "=05,-9.2,-9.2Ю,-11.0,-12.0,-32.0,-14.0,";
    $a explode(","$str);
    $a[2] = '/';
    $a[3] = '-';
    $a[6] = '-';
    $str implode(","$a);


    PHP:
    $str '
    =05,-36.0,-36.0,-35.0,-63.0,-45.0,-36.0,
    =05,-9.2,-9.2Ю,-11.0,-12.0,-32.0,-14.0,
    =05,10.0,11.0,12.0,24.0,31.0,32.0,
    '
    ;

    $str preg_replace_callback(
        
    '/^=05,(?:-?\d[^\s,]*,){6}$/m',
        function (
    $m) {
            
    $a explode(','$m[0]);
            
    $a[2] = '/';
            
    $a[3] = '-';
            
    $a[6] = '-';
            return 
    implode(','$a);
        },
        
    $str
    );
     
    Последнее редактирование: 30 апр 2020
    TREVERS нравится это.
  4. TREVERS

    TREVERS

    Регистр.:
    1 мар 2010
    Сообщения:
    188
    Симпатии:
    128
    lag, сильно, а под нотепад ++ можно как то адаптировать в обычную регулярку для стандартной опции поиск - замена
     
  5. lag

    lag

    Регистр.:
    13 окт 2014
    Сообщения:
    288
    Симпатии:
    356
  6. TREVERS

    TREVERS

    Регистр.:
    1 мар 2010
    Сообщения:
    188
    Симпатии:
    128
    гениально, второй вариант вообще оптимизирован