Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Регулярные выражения

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97

Открыть новую тему     Написать ответ в эту тему

leftMIND

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
   Регулярные выражения
Обучающий материал
  • Книги    
  • Шпаргалки: от AZJIO (AutoIt3, PCRE) от Dave Child
  • wikipedia.org - Регулярные выражения на wiki  
  • edlinsoft.blogspot.com - Регулярные выражения в .NET Framework  
  • php.ru - Синтаксис регулярных выражений  
  • php.net - Синтаксис регулярных выражений  
  • regexpstudio.com - Регулярные выражения для Delphi  
    Официальные источники:
  • docs.notepad-plus-plus.org - Официальный источник Notepad++ (англ. яз.)  
  • pcre.org - Официальный справочник движка PCRE (англ. яз.)  

  •    Тестирование регулярных выражений
    Программы
    Онлайн сервисы
  • RegexBuddy - крутая и платная  
  • RegExp - бесплатно, AZJIO, PCRE, AutoIt3  
  • Expresso  
  • The Regex Coach  
  • RegExstar, Github (AutoHotKey, PCRE)
  • Обзор программ от ManHunter    
  • regexr.com здесь в Community множество готовых регулярных выражений  
  • pagecolumn.com - для javascript  
  • pagecolumn.com - для php  
  • cuneytyilmaz.com - для javascript  
  • php-include.ru - на флеш-плеере  
  • regex101.com  
  • easyregexp.ru  
  • debuggex.com - показывает структурно  

  •    Схожие темы
  • javascript регулярные выражения
  • PHP: Регулярные выражения (RegExp, Regular, eregi, preg)
  • Игра - Регулярно выражайтесь!
     
    первое сообщение темы...
    Обсуждение шапки данной темы ведётся в этой теме
    Рекомендации по составлению вопросов в данной теме:

  • Всего записей: 33 | Зарегистр. 07-04-2002 | Отправлено: 23:55 15-10-2002 | Исправлено: AZJIO, 15:18 12-02-2021
    usalex

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Mavrikii

    Цитата:
    идущих подряд?

    Пары дублей разбросаны по файлу.
    Примерно так:
    000
    245
    111
    111
    876
    333
    333
    905
     

    Цитата:
    для какого приложения?

    Для Notepad++
    Но если есть какой-то другой способ, мне тоже пойдет.
    Цель - оставить в файле только те строки, для которых не нашлось дублей.

    Всего записей: 6374 | Зарегистр. 20-12-2004 | Отправлено: 03:36 13-03-2021
    Mavrikii

    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    usalex

    Цитата:
    Но если есть какой-то другой способ, мне тоже пойде

    например так
    https://jsfiddle.net/atsLde8j/
    вставить содержимое файла, нажать кнопку, скопировать обратно.

    Всего записей: 15582 | Зарегистр. 20-09-2014 | Отправлено: 05:16 13-03-2021
    YuS 2



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    usalex

    Цитата:
    Но если есть какой-то другой способ, мне тоже пойдет.

    Если говорить о других способах, то powershell, вполне подойдет:

    Код:
    $file_in = 'd:\test.txt'
    $file_out = 'd:\test_out.txt'
    $enc_in = 'utf8'
    $enc_out = 'utf8'
    (gc $file_in -enc $enc_in|group|? count -eq 1).values|out-file $file_out -enc $enc_out

    Всё... ну, кроме того, что могу посоветовать использовать крайнюю версию powershell (ps v 7.1, как минимум)

    Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 08:18 13-03-2021
    Fenrizz



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    usalex
    bat-файл

    Код:
    @echo off
    setlocal enabledelayedexpansion
     
    set cnt1=0
    del /Q /F file2.txt
     
    for /f "tokens=*" %%A in (file1.txt) do (
    set cnt2=0
    set dubl=0
    set /a cnt1+=1
    for /f "tokens=*" %%I in (file1.txt) do (
       set /a cnt2+=1
       if "%%A"=="%%I" if not !cnt1! equ !cnt2! set /a dubl=1 )
    if not !dubl! equ 1 echo %%A>>file2.txt )  

    Всего записей: 689 | Зарегистр. 12-09-2017 | Отправлено: 09:05 13-03-2021 | Исправлено: Fenrizz, 11:58 13-03-2021
    los

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    usalex

    Цитата:
    Но если есть какой-то другой способ, мне тоже пойдет.  

    для данного случая если установлена программа uniq
    cat file | uniq -u
    000
    245
    876
    905


    Всего записей: 7727 | Зарегистр. 08-09-2001 | Отправлено: 13:19 13-03-2021
    usalex

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Mavrikii
    YuS 2
    Fenrizz
    los
    Спасибо большое!
    (немножко с делами разгребусь и опробую)

    Всего записей: 6374 | Зарегистр. 20-12-2004 | Отправлено: 16:57 13-03-2021
    harrykkk



    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    usalex

    Цитата:
    Для Notepad++

    Если задача разовая, то наверное лучше воспользоваться любым способом выше. Если постоянная, то можно добавить функционал в Notepad++.
     
    Условие:
    Согласно постановке задачи дубликатов может быть только два. Дубликаты идут подряд один за другим, т.е. строки в файле предварительно отсортированы.
     
    Использование:
    1. Открываете файл с дубликатами
    2. Нажимаете выбранный вами хоткей
    3. Откроется новая вкладка с текстом без дубликатов
    4. Сохраняете новый файл
     
    Настройка:
    1. Устанавливаете плагин PythonScript
    2. Создаете файл ...\Notepad++\plugins\PythonScript\scripts\LineDuplicateRemove.py
     
    Текст файла
     
    3. Меню -> Плагины -> Python Script -> Configuration... -> Machine Scripts -> Выбираете LineDuplicateRemove.py -> Ниже Add -> Ok
     
    4. Перезагрузить NPP
     
    5. Опции -> Клавиши быстрого доступа -> Вкладка Плагины -> В поле фильтр вставить LineDuplicateRemove -> Назначить клавишу (желательно без Alt)
     
    6. Перезагрузить NPP

    Всего записей: 9020 | Зарегистр. 24-02-2013 | Отправлено: 17:00 13-03-2021 | Исправлено: harrykkk, 01:18 14-03-2021
    yaaa159

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    usalex

    Цитата:
    Но если есть какой-то другой способ

    powershell.exe -noprofile -command "Get-Content test.txt | Sort-Object -unique"
     
    Кроме того, в sort.exe Windows 10 есть недокументированный /unique параметр, поэтому он должен работать в командной строке:

    Код:
    type test.txt | sort /unique


    Всего записей: 64 | Зарегистр. 19-06-2015 | Отправлено: 17:20 13-03-2021 | Исправлено: yaaa159, 17:27 13-03-2021
    YuS 2



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    usalex
    В AkelPad, есть штатный плагин Format и у него штатная команда:

    Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 17:27 13-03-2021
    harrykkk



    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    yaaa159

    Цитата:
    powershell.exe -noprofile -command "Get-Content test.txt | Sort-Object -unique"

    Один из дубликатов остается

    Всего записей: 9020 | Зарегистр. 24-02-2013 | Отправлено: 18:06 13-03-2021
    los

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    harrykkk

    Цитата:
    Один из дубликатов остается

    есть подозрение что в случае

    Цитата:

    Код:
    type test.txt | sort /unique

    будет так же плюс добавится сортировка.

    Всего записей: 7727 | Зарегистр. 08-09-2001 | Отправлено: 19:07 13-03-2021
    harrykkk



    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    los
    Я второй вариант даже не проверял. И так понятно, что yaaa159 не внимательно прочёл условие

    Цитата:
    Цель - оставить в файле только те строки, для которых не нашлось дублей


    Всего записей: 9020 | Зарегистр. 24-02-2013 | Отправлено: 20:26 13-03-2021
    Death_INN

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    usalex

    Цитата:
    Подскажите, плиз, регулярку для удаления дублирующихся строк

    Сначала необходима сортировка, чтобы дубликаты шли друг за другом, а затем

    Код:
    ^(.+)(?:\R\1)+

    Всего записей: 3548 | Зарегистр. 24-10-2002 | Отправлено: 21:09 13-03-2021
    usalex

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Death_INN
    Такая регулярка удаляет только дубль, а не обе строки.
     
    harrykkk
    Спасибо за питон к NPP (не знал).
     
    YuS 2

    Цитата:
    В AkelPad, есть штатный плагин Format и у него штатная команда

    Очень легко дает нужный результат. Спасибо.
    Но пришлось назначать действие на клавишу.
    Как в AkelPad получить такую же панель кнопок, как у вас на скрине? Тоже плагин какой-нибудь нужен?

    Всего записей: 6374 | Зарегистр. 20-12-2004 | Отправлено: 21:47 13-03-2021
    Raf_SE



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Пытаюсь освоить регулярные выражения по developer.mozilla.org, но столкнулся с задачей которую мне не удаётся разрешить.
     
    Цель - сформировать RegExp правило, которое бы выдавало true на такие URL:
    https://dnipro.o3.ua/ (при том что вместо "dnipro" может быть что угодно)
    https://o3.ua/
     
    Кто-нибудь подскажет, как это реализовать?

    ----------
    «Фашисты будущего будут называть себя антифашистами» ©

    Всего записей: 1147 | Зарегистр. 06-08-2006 | Отправлено: 10:45 14-03-2021 | Исправлено: Raf_SE, 10:45 14-03-2021
    Mavrikii

    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Raf_SE
    https:\/\/[^\.]*\.?o3\.ua\/
    Ограничение - не поддомен 4 уровня
    Иначе  
    https:\/\/.*\.?o3\.ua\/
    Только не помню что там с жадностью будет

    Всего записей: 15582 | Зарегистр. 20-09-2014 | Отправлено: 11:00 14-03-2021 | Исправлено: Mavrikii, 11:02 14-03-2021
    Raf_SE



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    https:\/\/[^\.]*\.?o3\.ua\/

    Не подходит, поскольку срабатывает на https://что_угодно_o3.ua/, а нужно чтобы срабатывал только в двух случаях: https://что_угодно.o3.ua/ и https://o3.ua/

    ----------
    «Фашисты будущего будут называть себя антифашистами» ©

    Всего записей: 1147 | Зарегистр. 06-08-2006 | Отправлено: 11:05 14-03-2021
    Mavrikii

    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Raf_SE
    https:\/\/(.*\.)?o3\.ua\/

    Всего записей: 15582 | Зарегистр. 20-09-2014 | Отправлено: 11:06 14-03-2021
    Raf_SE



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Mavrikii
    По-прежнему выдаёт true на https://что_угодно_o3.ua/
     
    Думаю что нужно думать в сторону правил по типу https://(?=.*\.o3|o3) но как такое правило совместить с остальной частью строки, то есть «.ua/»?

    ----------
    «Фашисты будущего будут называть себя антифашистами» ©

    Всего записей: 1147 | Зарегистр. 06-08-2006 | Отправлено: 11:10 14-03-2021 | Исправлено: Raf_SE, 11:15 14-03-2021
    Mavrikii

    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Raf_SE

    Цитата:
    По-прежнему выдаёт true

    Показывайте как используете. Не должно срабатывать вы что то не так делаете.

    Всего записей: 15582 | Зарегистр. 20-09-2014 | Отправлено: 11:16 14-03-2021
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97

    Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Регулярные выражения


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru