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

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



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    sikemo (post)
    Цитата:
    но как показала практика, привязка к двоеточию не меняет строки, где оно наличесвует дважды

    Но это же само собой!. Это уже другой случай, для которого надо подрихтовать регулярку.  

    Цитата:
    не работает как надо  

    Что-то как-то странно. Захват не соответствует рег. выражению.

    Всего записей: 1329 | Зарегистр. 03-03-2008 | Отправлено: 22:18 08-03-2019
    YuS_2



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

    Цитата:
    Что-то как-то странно. Захват не соответствует рег. выражению.

    Мало того, что странно, так ещё и неправда. Только вот не понимаю: зачем неправда? И для AkelPad тоже неправда... в нем и проверялось изначально.
    Пруф:
    ссылка
     
    Но есть строки, которые, всё равно, неверно захватываются, т.к. в изначально предоставленном тексте не было конкретностей по условиям, а шаблон по нему составлять было проблематично, не зная всех возможных комбинаций...
    Вот так будет более универсально:
    ссылка

    Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 09:16 09-03-2019
    sikemo

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    https://regex101.com/r/EAb1mC/1
    первое лучше, оно захватывает строку

    Всего записей: 1327 | Зарегистр. 27-11-2008 | Отправлено: 00:37 10-03-2019
    YuS_2



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

    Цитата:
    первое лучше

    Лучшее - враг хорошего...
    Зачем захватывать всю строку, если поменять необходимо только начало этой строки до двоеточия?
    Но если требуется захват всей строки, это легко сделать, надо добавить перед последней скобкой:
    [^\n]*

    Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 09:58 10-03-2019
    vell



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Как с помощью "регулярных выражений"  из огромной html странички собрать картинки (содержимое <img>)  и убрать всякие лишние элементы оформления, задав ширину, оставив только чистый список типа:
     
    <img src='pic1.jpg' width='500' />
    <img src='pic2.jpg' width='500' />
    <img src='pic3.jpg' width='500' />
     
    Что-то я невпитал эти регулярные выражения, а по примерам что нашел, в окне поиска NotePad++ мне находит не то(
     
    В утилите RegExp, по подсказке задал шаблон <img.+?/> включил группы и в результатах поиска оно мне выдает список типа:
     
    Группа 7 &#9658;<img border="0" src="ССЫЛКА НА КАРТИНКУ" style="border-style: none; max-width: 100%; max-height: 2048px; height: auto !important;" />
     
    Но мне же надо только <img> с src="ССЫЛКА НА КАРТИНКУ" и без всяких рамок, да приблуд... как там это делается?

    Всего записей: 600 | Зарегистр. 06-10-2004 | Отправлено: 11:56 10-03-2019 | Исправлено: vell, 12:15 10-03-2019
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    vell
    в поле найти:
    Код:
    <img[^<>]+?src=(['"])([^<>']+?)\1[^<>]+?>

    в поле заменить:
    Код:
    <img src='\2' width='500' />

    поставь галку "Заменить"
    Это будет первый проход, чтобы заменить лажевые строки на правильные
    далее результат переносишь в область, в которой надо делать поиск, ставишь крыжик "Группы", но снимаешь рядом галку (которая добавляет текст Группы").
    Снова делаешь поиск  используя <img.+?/>
     
    Я усложнил регулярку потому что в одном примере используются апострофы (одинарная кавычка), в другом двойная кавычка.
    <img src='ссылка' width='500' />
    так как у тебя между <img и src может быть пробел или любой текст, то суём туда [^<>]+?, что означает искать любой символ кроме <> много раз пока не встретится src. Так как мы не знаем будет апостроф или кавычка то делаем любой из них (['"]) группа с классом выбора одного из двух символов, далее ссылку на найденную группу \1 будем использовать как завершение. Это захватывает ссылку ([^<>']+?) то есть группа из любого символа кроме <> повторяется до тех пор пока не встретит группу \1 которая у нас либо кавычка либо апостроф. Далее опять какой-то текст [^<>]+? в котором нет <> пока не встретит завершающий >
    В строке замены <img src='\2' width='500' /> имеется правильная строка и ссылка на группу \2 вместо которой вставиться ссылка. Так мы заменим плохие ссылки на правильные. А уж потом соберём их с помощью <img.+?/>.

    Всего записей: 4547 | Зарегистр. 03-05-2006 | Отправлено: 15:29 10-03-2019 | Исправлено: AZJIO, 15:40 10-03-2019
    vell



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AZJIO спасибо, кажись получилось!

    Всего записей: 600 | Зарегистр. 06-10-2004 | Отправлено: 17:09 10-03-2019
    sikemo

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    нужна регулярка на удаление строчной украинской буквы в списке типа
     
    Подробнее...
     
     
     
    Добавлено:
     
    Б
    б
    Б
    бібліографічний
    білий
    білоруський
    багатий
    багатолюдний
    багатоповерховий
    багнистий
    баклажан
    балкон
    балконе
    балконом
    банан
    Бангладеш
    барра
    баскетбол
    безособовий
    Беліз
    бельгійський
    бензин
    блювотний
    бо
    болгарський
    Бонишин
    бородатий
    босий
    боснійський
    босняцький
    босоногий
    Бразилія
    будьмо
    В
    в
    В
    відносний

     
     
     
    т.е. задача удалить ОДНУ Заглавную Б, В, …, но если она в задвоении, значит, одну оставить, одну удалить. Имена собственные, нач. на заглавную, не трогать
     
    у меня что-то такое:  
    ^(?-i)[А-ЯІҐЄ](?-i)\b

    Всего записей: 1327 | Зарегистр. 27-11-2008 | Отправлено: 21:37 12-03-2019
    Romul81



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    sikemo
    Не совсем понятна задача, но попробую. Удаление всех "задвоенных" букв, отдельностоящих на каждой последовательной строке. Если такая буква стоит в строках, расположенных не подряд, то регулярка не сработает. Производится также конвертация в нижний регистр.
    Для EditPad Pro
     
    Найти:

    Код:
    (?i)^([А-ЯІҐЄ])$(\r?\n)(?:\1\r?\n)+

    Заменить:

    Код:
    %GROUP1:L%\2

    Всего записей: 1329 | Зарегистр. 03-03-2008 | Отправлено: 22:48 12-03-2019 | Исправлено: Romul81, 22:49 12-03-2019
    sikemo

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Akel, EmEd 11.0.4 | посл &#8594; Invalid or uninterminated Perl
     
    Добавлено:
    Akel ищет но азменяет на буквальное %GROUP1:L%\2

    Всего записей: 1327 | Зарегистр. 27-11-2008 | Отправлено: 22:58 12-03-2019
    Romul81



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    sikemo
    Romul81 (post)
    Цитата:
    Для EditPad Pro  

     

    Всего записей: 1329 | Зарегистр. 03-03-2008 | Отправлено: 23:09 12-03-2019
    sikemo

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

    Всего записей: 1327 | Зарегистр. 27-11-2008 | Отправлено: 23:13 12-03-2019
    Baltazar500



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Каким образом можно регекспами удалить все точки кроме тех, что идут после номера эпизода и перед расширением файла ? У меня уже мозги в узел завязались. Нужен вариант, что сработает в npp, или что ещё лучше, в Total Commander.
    Код:
    S03E01.Initiation.mkv
    S03E02.For.the.Man.Who.Has.Everything.mkv
    S03E03.Kids'.Stuff.mkv
    S03E04.Hawk.and.Dove.mkv
    S03E05.This.Little.Piggy.mkv
    S03E07.The.Return.mkv
    S03E08.The.Greatest.Story.Never.Told.mkv
    S03E09.Ultimatum.mkv
    S03E10.Dark.Heart.mkv
    S03E11.Wake.the.Dead.mkv
    S03E12.The.Once.and.Future.Thing.Part.1.Weird.Western.Tales.mkv
    S03E13.The.Once.and.Future.Thing.Part.2.Time.Warped.mkv


    Всего записей: 2279 | Зарегистр. 19-09-2011 | Отправлено: 09:48 15-03-2019 | Исправлено: Baltazar500, 09:49 15-03-2019
    Romul81



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

    Код:
    (?<!E\d{2})\.(?!\w+$)

    Вместо \w+ можете выставить конкретное расширение, если оно у вас одно, напр. mkv.

    Всего записей: 1329 | Зарегистр. 03-03-2008 | Отправлено: 15:27 15-03-2019
    YuS_2



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

    Цитата:
    Каким образом можно регекспами удалить все точки кроме тех, что идут после номера эпизода и перед расширением файла ? У меня уже мозги в узел завязались. Нужен вариант, что сработает в npp, или что ещё лучше, в Total Commander.

    В npp - надо ли? Переименовывать-то требуется файлы... поэтому в npp слишком много ручной работы предстоит...
    В тотале не получится, т.к. не работаеют обратный просмотр lookaround, а вот в powershell - запросто:

    Код:
    $fld = 'D:\TEST'
    dir $fld -filt *.mkv -file|%{ren $_.fullname (($_.basename -replace '(?<!S\d+E\d+)\.') + $_.extension) -whatif}

    если всё правильно, то -whatif можно удалить и запустить код повторно...

    Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 18:10 15-03-2019 | Исправлено: YuS_2, 18:13 15-03-2019
    U235

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

    Цитата:
    или что ещё лучше, в Total Commander

    Можно за три прохода в ТС:
    1. Замена первого вхождения точки "." на неиспользуемый символ или группу, например,  "__"
    2. Замена всех точек на "пусто" (удаление).
    3. Замена "__" на точку.

    Всего записей: 977 | Зарегистр. 14-12-2005 | Отправлено: 21:01 15-03-2019 | Исправлено: U235, 21:04 15-03-2019
    Jonmey

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

    Цитата:
    Каким образом можно регекспами удалить все точки кроме тех, что идут после номера эпизода и перед расширением файла ? У меня уже мозги в узел завязались. Нужен вариант, что сработает...  в Total Commander.

    Пример требуемого одношагового переименования в TC без регэкспов и никакого мошенства:
     

    Всего записей: 1368 | Зарегистр. 17-01-2011 | Отправлено: 04:08 16-03-2019 | Исправлено: Jonmey, 04:32 16-03-2019
    YuS_2



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

    Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 09:18 16-03-2019
    sikemo

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    а где ж еще ему писать, если ТС спросил решения, а оно есть, притом самое что ни простое

    Всего записей: 1327 | Зарегистр. 27-11-2008 | Отправлено: 11:17 16-03-2019
    YuS_2



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

    Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 11:55 16-03-2019
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 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