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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
    bk99



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

    Всего записей: 947 | Зарегистр. 27-12-2005 | Отправлено: 11:30 27-11-2020
    Eukhx

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите пожалуйста, нужно в Notepad ++ удалить окончание текста в каждой строке до открывающей квадратной скобки "[" и её в том числе.

    Всего записей: 40 | Зарегистр. 01-01-2021 | Отправлено: 21:34 30-01-2021
    regist123



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Eukhx написал(а)
    Цитата:
    удалить окончание текста в каждой строке

    Что значит "окончания"? Почитайте leftMIND написал(а)
    Цитата:
    Рекомендации по составлению вопросов в данной теме: [?]


    ----------
    Раздачи и акции

    Всего записей: 7198 | Зарегистр. 20-03-2009 | Отправлено: 09:48 31-01-2021
    Eukhx

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    regist123
    Спасибо, получилось это сделать такой регуляркой ( \[.*$ ) но возник вопрос, как исключить текст в конце предложения, ( \[.*ВОТ ЗДЕСЬ$ ).

    Всего записей: 40 | Зарегистр. 01-01-2021 | Отправлено: 10:55 31-01-2021
    regist123



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Eukhx написал(а)
    Цитата:
    удалить окончание текста в каждой строке до открывающей квадратной скобки

    написал(а)
    Цитата:
    получилось это сделать такой регуляркой ( \[.*$ )

    При этом ваша регулярка удаляет после скобки.  

    Цитата:
    как исключить текст в конце предложения, ( \[.*ВОТ ЗДЕСЬ$ ).

    А по какому принципу его исключать? Там одна и та же фраза или как?

    ----------
    Раздачи и акции

    Всего записей: 7198 | Зарегистр. 20-03-2009 | Отправлено: 12:20 31-01-2021
    Eukhx

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

    Цитата:
     При этом ваша регулярка удаляет после скобки.  

    Мне подошло, но на самом деле, интересно бы было иметь возможность выбирать номер повторяющегося знака, т.е. есть "бла[блабла], блабла [бла].блаблабла", моя регулярка удалит всё до первой квадратной скобки.
     

    Цитата:
    Там одна и та же фраза или как?

    Да, есть ли какой-то способ "экранировать" то, что не нужно трогать?

    Всего записей: 40 | Зарегистр. 01-01-2021 | Отправлено: 14:16 31-01-2021 | Исправлено: Eukhx, 14:20 31-01-2021
    regist123



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Eukhx написал(а)
    Цитата:
    Да, есть ли какой-то способ "экранировать" то, что не нужно трогать?

    Опять таки достаточно было бы почитать шапку. Например здесь пример нужного вам.

    ----------
    Раздачи и акции

    Всего записей: 7198 | Зарегистр. 20-03-2009 | Отправлено: 15:53 31-01-2021
    SharkyEXE

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте
     
    Ищу способ в соответствии с TR1 Regular Expressions
     
    Исходная строка
    p:QwertyZX,c:001541,c:031541,c:050001,c:100003,c:111542,c:141542,C:2710,C:4ae1,f:40
     
    Текст
    ,c:001541,c:031541,c:050001,c:100003,c:111542,c:141542,C:2710,C:4ae1
    может быть любым, произвольным
     
    Помогите удалить текст между
    p:QwertyZX,
    и
    f:40
    то есть это
    c:001541,c:031541,c:050001,c:100003,c:111542,c:141542,C:2710,C:4ae1,
     
    Чтобы на выходе была строка
    p:QwertyZX,f:40
     
    Спасибо

    Всего записей: 366 | Зарегистр. 25-01-2009 | Отправлено: 08:49 01-02-2021 | Исправлено: SharkyEXE, 10:17 01-02-2021
    YuS 2



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

    Цитата:
    Чтобы на выходе была строка
    p:QwertyZX,f:40

     
    Замена:
    Что:

    Код:
    (?!p:QwertyZX),.+(?=,f:40)

    Чем:

    Код:
    здесь должно быть пусто

    Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 11:49 01-02-2021 | Исправлено: YuS 2, 11:57 01-02-2021
    los

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

    Цитата:
    Помогите удалить текст между  

    в данном случае можно обойтись и без регулярных выражений:
    $ cat file
    p:QwertyZX,c:001541,c:031541,c:050001,c:100003,c:111542,c:141542,C:2710,C:4ae1,f:40
    $ cat file | cut -f1,10 -d ','
    p:QwertyZX,f:40


    Всего записей: 7727 | Зарегистр. 08-09-2001 | Отправлено: 12:37 01-02-2021
    SharkyEXE

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    YuS 2
     
    Здравствуйте
     
    Тут вот по чуть расширеннее
     
    А если у меня
    1) QwertyZX+ (со знаком плюс)
    2) f:5, f:1 или другое число может быть написано
     
    Мол, хочется максимально универсальный вариант
     
    los
     
    Здравствуйте
     
    А как мне в Windows с этим Вашим примером сделать, мол, какой батник, скрипт или как использовать Ваш вариант?

    Всего записей: 366 | Зарегистр. 25-01-2009 | Отправлено: 13:12 01-02-2021
    los

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

    Цитата:
    А как мне в Windows с этим Вашим примером сделать, мол, какой батник, скрипт или как использовать Ваш вариант?  


    для Windows уже давно портированы многие unix программы и существует wsl Можете собрать сами или скачать уже скомпилированные - они вам пригодятся не только для этого случая.
    Для примера я использовал эти(cat.exe необязательна)  
    https://workupload.com/file/fHLWXLenEyA
    SHA256 (cat.exe) = 93b8d307bb15af3968920bdea3beb869a49d166f9164853c58a4e6ffdcae61c6
    SHA256 (cut.exe) = 40f4f6b1dabdf0defce4846138f01271748d2c31a519116580a077a1dbefb820
    SHA256 (file) = 3537d231e1a495b9020f5cc004f6ec3d4676dae4242725f6e5b98e351e9159b8

    Всего записей: 7727 | Зарегистр. 08-09-2001 | Отправлено: 14:03 01-02-2021
    YuS 2



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

    Цитата:
    Тут вот по чуть расширеннее
    А если у меня

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

    Цитата:
    1) QwertyZX+ (со знаком плюс)
    2) f:5, f:1 или другое число может быть написано


    Код:
    (?!p:QwertyZX\+?),.+(?=,f:\d+)

     

    Цитата:
    А как мне в Windows с этим Вашим примером сделать, мол, какой батник, скрипт или как использовать Ваш вариант?

    не надо ничего тащить в windows, у окон есть встроенный инструмент powershell, который, кстати, существует и для linux, и для macOS

    тем более, что тот пример, всего лишь, разрезает текст на элементы и оставляет только 1 и 10, то бишь, не учтен вариант, что элементов может быть и больше, и меньше, а также, неизвестно: представленная строка - это вся строка или у неё есть ещё какой-либо текст перед ней и(или) после неё?
    Тот же powershell легко справится и с разрезанием... вопрос только в полной формулировке задачи...

    Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 14:44 01-02-2021 | Исправлено: YuS 2, 14:50 01-02-2021
    SharkyEXE

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    los
    Здравствуйте
     
    Прошу прощения, а вот на самом деле, у Вас статично работает, мол 1я и 10 позиция, а если у меня 1я позиция то она 1я, а вот может 10я, а может 130я - как быть?
     
    YuS 2
    Здравствуйте
     
    А можно вообще универсальный вариант, мол, и плюсы и другие символы могут быть или такое невозможно?
     
    Просто может быть
    QwertyZX+++ (со знаком три плюса)
     
    А может и другая ерунда быть, мол, хочется универсальный способ, все равно, что будет внутри

    Всего записей: 366 | Зарегистр. 25-01-2009 | Отправлено: 16:19 01-02-2021
    los

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    SharkyEXE,
    так инструменты и соответствующее решение выбираются под задачу. А т.к. часто задача решается несколькими способами инструментами выбирается то что проще(удобнее, привычнее и т.п.)
    Как ва правильно указал YuS 2 (он вообще дает дельные советы ) - правильно сформулируйте задачу и тогда получите возможность выбрать удобный для вас вариант.
     
    В примерах разная длина строки между 'p:QwertyZX' и 'f:40', и на самом деле неважно 'p:QwertyZX' или 'p:QwertyZX+' и 'f:40' или 'f:4' и т.п.
    $ echo 'p:QwertyZX,c:001541,c:031541,c:050001,c:100003,c:111542,c:141542,C:2710,C:4ae1,f:40 ' | awk -F"," '{print $1"," $NF}'
    p:QwertyZX,f:40
    $ echo 'p:QwertyZX,c:001541,c:031541,c:050001,c:100003,c:111542,c:141542,f:40' | awk -F"," '{print $1"," $NF}'
    p:QwertyZX,f:40
    $ echo 'p:QwertyZX,c:001541,c:031541,c:050001,c:100003,c:111542,c:141542,C:2710,C:4ae1,C:AAA,f:40' | awk -F"," '{print $1"," $NF}'
    p:QwertyZX,f:40

    и более измененная строка
    $ echo 'p:QwertyZX+++,c:001541,c:031541,c:050001,c:100003,c:111542,c:141542,C:2710,C:4ae1,a:5' | awk -F"," '{print $1"," $NF}'
    p:QwertyZX+++,a:5


    Всего записей: 7727 | Зарегистр. 08-09-2001 | Отправлено: 17:10 01-02-2021 | Исправлено: los, 17:13 01-02-2021
    YuS 2



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

    Цитата:
    А можно вообще универсальный вариант, мол, и плюсы и другие символы могут быть или такое невозможно?

    Можно, конечно...

    Код:
    (?!p:QwertyZX[^,]*),.+(?=,f:\d+)

    Но, до тех пор, пока у задачи будут меняться условия "на лету", универсального решения не получите... будут только частные решения, той или иной степени универсальности...
    Например, что в условиях необходимо отобразить:
    1. Образцы исходных строк ..., ..., ...
    2. Все возможные (чем-либо отличающиеся друг от друга) варианты строк ..., ..., ...
    3. Что необходимо получать в результате ..., ..., ...
    4. Какое-либо подробное описание того, что именно надо удалить, а что оставить. Полные условия для этого описания.
     
    Судя по всему, Вам необходимо изменить какие-то строки в массиве текста.
    Отсюда вопросы:
    1. По каким критериям отбираются строки для изменения?
    2. Что именно в строках необходимо изменять?
      а) часть строки (подстроку) без точного местоположения в исходной строке, т.е. перед изменяемой частью (или опорными точками, начальной и конечной) или после неё, могут находиться какие-либо данные?
        пример:
            p:QwertyZX,c:001541,c:031541,c:050001,c:100003,c:111542,c:141542,C:2710,C:4ae1,f:40,v:Ctdf
            a:Treyu,p:QwertyZX,c:001541,c:031541,c:050001,c:100003,c:111542,c:141542,C:2710,C:4ae1,f:40
            a:Treyu,p:QwertyZX,c:001541,c:031541,c:050001,c:100003,c:111542,c:141542,C:2710,C:4ae1,f:40,v:Ctdf
            - возможны ли такие варианты?
      б) строка всегда состоит из частей, разделенных запятыми и всегда необходимо оставлять первую и последнюю часть, с учетом отобранных строк из п.1?
            - в этом случае, действительно, проще резать строку и выводить первую и последнюю части... и регулярки тут не нужны вовсе.

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

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    los
     
    Здравствуйте
     
    Спасибо Вам за образец, шаблон, попробую на досуге
     
    lYuS 2
     
    Здравствуйте
     
    Просьба не обижаться, будьте так любезны, я в этом не понимаю, просто может не новое, хотелось бы универсальной таблетки, так сказать, а так немного понимать хочу, получается, что такое и правда невозможно
     
    1) в строке между p:QwertyZX и f:40 может быть сколько угодно всяко-разного текста
    2) если вкратце, а вот для этого можно или нет, пожалуйста, пример
    p:QwertyZX,c:001541,c:031541,c:050001,c:100003,c:111542,c:141542,C:2710,C:4ae1,f:40,v:Ctdf
            a:Treyu,p:QwertyZX,c:001541,c:031541,c:050001,c:100003,c:111542,c:141542,C:2710,C:4ae1,f:40
            a:Treyu,p:QwertyZX,c:001541,c:031541,c:050001,c:100003,c:111542,c:141542,C:2710,C:4ae1,f:40,v:Ctdf
    Это для меня максимальный вариант, в плане как бы оставить p:QwertyZX (будет или нет знаки + и прочие после QwertyZX) + оставить f: (и разные цифры после двоеточия)

    Всего записей: 366 | Зарегистр. 25-01-2009 | Отправлено: 08:02 02-02-2021
    sikemo

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    f: в какой позиции? по какому принципу оставлять?  
     
    вот вижу f:40,v:Ctdf

    Всего записей: 1329 | Зарегистр. 27-11-2008 | Отправлено: 17:55 02-02-2021
    usalex

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите, плиз, регулярку для удаления дублирующихся строк.
    в NPP есть функция удаления дублей, но она удаляет только дубль, оставляя одну строку из двух.
    А мне нужно удалять обе повторяющиеся строки, чтоб в файле остались только те строки, для которых вообще нет дублей.

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

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

    Цитата:
    для удаления дублирующихся строк.

    идущих подряд? для какого приложения?
    потому что регулярка для такого не самое лучшее средство.
    особенно если будет больше 2х повторений.

    Всего записей: 15582 | Зарегистр. 20-09-2014 | Отправлено: 03:26 13-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