За последние 24 часа нас посетили 16842 программиста и 1291 робот. Сейчас ищут 1407 программистов ...

как заменить r на г ?

Тема в разделе "Регулярные выражения", создана пользователем dobrmir, 17 сен 2018.

  1. dobrmir

    dobrmir Активный пользователь

    С нами с:
    8 окт 2012
    Сообщения:
    200
    Симпатии:
    2
    Есть тексты, извлечённые из документов, распознанных Finereader или в другой программе. При этом в некоторых русских словах вместо буквы г отображается r. Какой регуляркой массово через Notepad++ заменить, чтобы затронута была только кириллица, а слова на иностранных языках не были изменены?

    Например: rосударственное уреrулирование в Гонк-Конr
     
  2. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    dobrmir нравится это.
  3. dobrmir

    dobrmir Активный пользователь

    С нами с:
    8 окт 2012
    Сообщения:
    200
    Симпатии:
    2
    А как применить в Notepad++?
     
  4. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    Также. Звездочку случайно оставил
    ([а-яА-Я])r на $1г
    --- Добавлено ---
    Плюс г может быть в начале большая или маленькая точку нужно искать перед пробелом
     
    dobrmir нравится это.
  5. keren

    keren Новичок

    С нами с:
    15 ноя 2017
    Сообщения:
    513
    Симпатии:
    42
    два раза пройти:
    "/([а-яё])r/iu", "$1г"
    "/r([а-яё])/iu", "г$1"
     
  6. joshadow

    joshadow Активный пользователь

    С нами с:
    24 фев 2015
    Сообщения:
    10
    Симпатии:
    1
    Ышо варианты
    str_replace() https://php.ru/manual/function.str-replace.html
    в варианте с фаршем по обработке файла:
    PHP:
    1. <?php
    2.         $iFileName='str_rep.txt'; // имя файла для трансляции
    3.         $oFileName='str_rep.out.txt'; // имя выходного файла
    4.         $iFileBuf=array(); // буфер входного файла
    5.         $oDesFile=null; // переменаая для дескриптора файла
    6.  
    7.         $chto='r'; // что меняем
    8.         $naChto='г'; // на что меняем
    9.        
    10.         $str=''; // строка для итератора
    11.         $rStr=''; // строка результата трансляции
    12.        
    13.  
    14.         $iFileBuf=file($iFileName); // читаем входногй файл в буффер
    15.        
    16.         $oDesFile=fopen($oFileName,'w+'); // открываем файл для результата на запись
    17.        
    18.         // начинаем перебор
    19.         foreach ($iFileBuf as $str) { // перебераем все строки через $str по циклу
    20.       $rStr=str_replace($chto,$naChto,$str); // меняем
    21.       echo "\n".$str." -> ".$rStr; // вывод для отладки
    22.       fwrite($oDesFile,$rStr); // пишем строку в результирующий файл
    23.     }
    24.    
    25.     fclose($oDesFile); // закрываем дескриптор файла
    26.     echo "\n"; // перевод строки после вывода отладки
    27. ?>
    пример файла ввода (str_rep.txt)
    Код (Text):
    1. rосударственное уреrулирование в Гонк-Конr
    2. rосударственное уреrулирование в Гонк-Конr
    3.  
    4. rосударственное уреrулирование в Гонк-Конr rосударственное уреrулирование в Гонк-Конr
    5. rосударственное уреrулирование в Гонк-Конr
    ну и как вариант, можно догнать до состояния консольной приблуды, через $argv https://php.ru/manual/reserved.variables.argv.html
     
  7. yanuzay

    yanuzay Активный пользователь

    С нами с:
    28 мар 2018
    Сообщения:
    501
    Симпатии:
    58
    а что просто заменить r на г не работает?
    [​IMG]
     
  8. joshadow

    joshadow Активный пользователь

    С нами с:
    24 фев 2015
    Сообщения:
    10
    Симпатии:
    1
  9. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
  10. joshadow

    joshadow Активный пользователь

    С нами с:
    24 фев 2015
    Сообщения:
    10
    Симпатии:
    1
    Прочитал не внимательно - это правда.
    Но может, если выйти за рамки предложенного, возможно решить ту же задачу - но другими средствами с более высокой степенью автоматизации. :)
     
  11. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    @joshadow, а оно тебе надо?)) чувак хочет в нотпаде, можт он электроник и ему автоматизация нафиг не надо)
     
  12. mirosas

    mirosas Активный пользователь

    С нами с:
    17 июл 2015
    Сообщения:
    236
    Симпатии:
    5
    Пока чувак мозг всем ебет с регулярками, сделал бы уже 108 реплейсов без регулярок (10 минут), если ему автоматизация не нужна.