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

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

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

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
    jentoso



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

    Код:
    ^([^()]+?)\s*\([^)]*?(\d+)[^)]*\)[^0-9]*(\d{4}).*$

    Всего записей: 742 | Зарегистр. 25-10-2008 | Отправлено: 23:12 02-01-2026
    kamenkapenza



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

    Цитата:
    Код:
    ^([^()]+?)\s*\([^)]*?(\d+)[^)]*\)[^0-9]*(\d{4}).*$

    jentoso
    вставил в верхнюю строку (Найти) Тоттала, в нижняю (Заменить на) не знаю, чего вставлять, методом тыка (что раньше советовали: $1 $2-$3 и $1-$2, ничего не изменилось в названии.

    Всего записей: 758 | Зарегистр. 23-05-2021 | Отправлено: 00:10 03-01-2026 | Исправлено: kamenkapenza, 00:18 03-01-2026
    jentoso



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

    Код:
    ^(.*?)\s*\([№N]?\s*(\d+)\)[^(]*\(?\d{2}\.\d{2}\.(\d{4})\)?.*$
    $1 $3-$2

    Всего записей: 742 | Зарегистр. 25-10-2008 | Отправлено: 00:26 03-01-2026 | Исправлено: jentoso, 00:29 03-01-2026
    www_world

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    kamenkapenza
    Вот напр. один регэксп работающий во всех четырех случаях

    Цитата:
    Архитектурно-художественный еженедельник (№ 1) - Коллектив авторов  01.04.1915 (6257204)
    Антракт, [еженедельная газета], (год 4-й) , 1867, № 20, 21 мая  21.05.1867 (6152186)
    Вечерняя Москва, 1937, № 210 (4141), 13 сентября - Коллектив авторов  13.09.1937 (6306156)
    Вечерняя Москва, 1 апреля, 1973, № 77 (15035) - Коллектив авторов  01.04.1973 (6302240)

    Найти
    ^([А-я- ]+)[ ,]+[^№]*№ (\d+)\D[^\.]+.{4}(\d{4}).*$
    Заменить на
    $1 $3-$2
     

    Всего записей: 681 | Зарегистр. 04-11-2018 | Отправлено: 00:28 03-01-2026 | Исправлено: www_world, 19:14 03-01-2026
    kamenkapenza



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

    Цитата:
    Найти
    ^([А-я- ]+)[ ,]+[^№]*№ (\d+)\D[^\.]+.{4}(\d{4}).*$
    Заменить на
    $1 $3-$2
     

     
    Ух ты! Здорово!  
    jentoso и www_world
    Большое спасибо! И первый, и второй вариант подходит, всё получается.
    Мне бы так научиться с этими иероглифами оперировать и радоваться, какой я герой, что сам формулу составил !
     
    Можно ли над этим регэкспом как то поколдовать, чтобы он однозначным номерам газеты ноль присваивал или два, если наибольшее число трехзначное.? То есть вместо Архитектурно-художественный еженедельник 1915-1 (как сейчас программы выдает) получалось бы Архитектурно-художественный еженедельник 1915-01, потому что система ставит по порядку 1, потом 10, а никак не 2, то есть перед 1 надо ставить 0. Чего то я не особо помню, но кажется, что в трехзначных числах (обычно подписка ежедневных газет за 300 номеров) при нумерации будет 1, 10, 100, по порядку (или я ошибаюсь), тогда получается, что надо нумеровать как 001, 010, 100, тогда правильная нумерация сохранится.  
    И почему то расширение (pdf) пропалает,  то есть на выходе безликий файл без расширения (но это всё решаемо: надо заново прогонять и ставить в графу Е Тотал коммандера расширение pdf для всех файлов.

    Всего записей: 758 | Зарегистр. 23-05-2021 | Отправлено: 20:21 03-01-2026 | Исправлено: kamenkapenza, 20:36 03-01-2026
    jentoso



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    kamenkapenza
    Для рабочего примера  
    www_world (пост)
    Цитата:
    Найти
    ^([А-я- ]+)[ ,]+[^№]*№ (\d+)\D[^\.]+.{4}(\d{4}).*$

    Заменить на
    $1 $3-00$2
    Но это работает только для нумерации от 1 до 9, в случае если будет уже 10 и выше, результат получится таким: 0010.

    Всего записей: 742 | Зарегистр. 25-10-2008 | Отправлено: 21:16 03-01-2026 | Исправлено: jentoso, 21:37 03-01-2026
    mvk2006



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

    Цитата:
    И почему то расширение (pdf) пропадает

    не нужно применять поиск/замену к расширению файла, для чего снять соответствующую галочку [E]

    Всего записей: 531 | Зарегистр. 15-10-2005 | Отправлено: 21:53 03-01-2026
    kamenkapenza



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Проще тогда закладывать сначала 9 через маску (к примеру) "Вечерняя Москва 1965-0, счетчик, и вставлять 9 номеров, получится Вечерняя Москва 1965-01 - .. Вечерняя Москва 1965-09.  А потом вставлять Вечерняя Москва 1965-10 -...Вечерняя Москва 1965-99 (убрав 0 из маски), ну и потом можно вставлять сотые номера. То есть в 3 этапа (как я и делал раньше)
     
    Добавлено:

    Цитата:
    не нужно применять поиск/замену к расширению файла, для чего снять соответствующую галочку [E]

    В этой графе нет никаких галочек

    Всего записей: 758 | Зарегистр. 23-05-2021 | Отправлено: 21:56 03-01-2026
    jentoso



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    kamenkapenza
    Для получения из исходных названий

    Код:
    Антракт, [еженедельная газета], (год 4-й) , 1867, № 20, 21 мая  21.05.1867 (6152186)
    Архитектурно-художественный еженедельник (№ 1) - Коллектив авторов  01.04.1915 (6257204)
    Вечерняя Москва, 1 апреля, 1973, № 77 (15035) - Коллектив авторов  01.04.1973 (6302240)
    Вечерняя Москва, 1 июня, 1973, № 126 (15084) - Коллектив авторов  01.06.1973 (6302287)

    Вариант с нумерацией в три цифры
    Найти
    ^([А-я- ]+)[ ,]+[^№]*№ (\d+)\D[^\.]+.{4}(\d{4}).*$
    Заменить
    $1 $3-00$2
    Получаем

    Код:
    Антракт 1867-0020
    Архитектурно-художественный еженедельник 1915-001
    Вечерняя Москва 1973-0077
    Вечерняя Москва 1973-00126

    Но для удаления лишних нулей, придется выполнить еще раз переименование в два этапа
    1 этап
    Найти
    00(\d{2})
    Заменить
    0$1
    Получает

    Код:
    Антракт 1867-020
    Архитектурно-художественный еженедельник 1915-001
    Вечерняя Москва 1973-077
    Вечерняя Москва 1973-0126

    2 этап
    Найти
    0(\d{3,})
    Заменить
    $1
    Получаем

    Код:
    Антракт 1867-020
    Архитектурно-художественный еженедельник 1915-001
    Вечерняя Москва 1973-077
    Вечерняя Москва 1973-126

    Всего записей: 742 | Зарегистр. 25-10-2008 | Отправлено: 22:20 03-01-2026 | Исправлено: jentoso, 23:14 03-01-2026
    www_world

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

    Цитата:
    Но для удаления лишних нулей, придется выполнить еще раз переименование в два этапа

    Второй этап не нужен. Можно сделать за один шаг, напр.:
    0*(\d{3})$
    на
    $1

    Всего записей: 681 | Зарегистр. 04-11-2018 | Отправлено: 05:32 04-01-2026 | Исправлено: www_world, 06:34 04-01-2026
    mvk2006



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

    Цитата:
    В этой графе нет никаких галочек

    А Вы продемонстрируйте процесс со снятой галкой и пропаданием расширения

    Всего записей: 531 | Зарегистр. 15-10-2005 | Отправлено: 08:51 04-01-2026
    jentoso



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    www_world
    Действительно, только на самом первом этапе надо применить выражение $1 $3-000$2 с добавлением 0, вместо $1 $3-00$2

    Всего записей: 742 | Зарегистр. 25-10-2008 | Отправлено: 09:29 04-01-2026 | Исправлено: jentoso, 09:29 04-01-2026
    kamenkapenza



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

    Цитата:
     Вы продемонстрируйте процесс со снятой галкой и пропаданием расширения

    Демонстрирую, галочек в меню не нашел. https://disk.yandex.ru/i/HOzc7pywB5fLEQ
     
     
    Добавлено:
    С подстановкой нулей у меня ничего не получилось, вот https://disk.yandex.ru/i/lzIyeVIsRdG64g

    Всего записей: 758 | Зарегистр. 23-05-2021 | Отправлено: 12:07 04-01-2026 | Исправлено: kamenkapenza, 12:10 04-01-2026
    jentoso



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    kamenkapenza
    Так мы же пример приводим не для подстановке нулей в уже переименованном виде.
    С начала проводится переименование из длинных начальных имён, где будет подстановка нулей для приведения к виду нумерации в три цифры (0001, 0077), где к трёхзначным представятся также нули 000126. Вторым этапом убираем лишнее нули из нумерации чтобы было всё в три цифры (001, 077, 126, 300).
     
    P.S. Обновите TC до последней версии.

    Всего записей: 742 | Зарегистр. 25-10-2008 | Отправлено: 12:33 04-01-2026 | Исправлено: jentoso, 12:36 04-01-2026
    kamenkapenza



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

    Цитата:
    P.S. Обновите TC до последней версии.

    Спросил про последнюю версию (где её взять) в теме  про Тотал коммандер.

    Всего записей: 758 | Зарегистр. 23-05-2021 | Отправлено: 13:22 04-01-2026
    www_world

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    jentoso
    Нулей можно вставить, сколько угодно. Главное, чтобы строка цифр получилась не короче желаемой.
    Например,
    Цитата:
    Заменить на
    $1 $3-нули$2
    для конечных трехзначных номеров будут одинаково хорошо работать
    $1 $3-00$2
    $1 $3-000$2
    $1 $3-0000$2
    ....
    $1 $3-0000000000000$2
    ....
    и тд
    с последующим выражением
    Цитата:
    0*(\d{3})$
    на
    $1

     
    kamenkapenza
    Подробнее...
    С помощью текущей версии ТС (без использования плагинов) можно переименовать издания по вашему шаблону с добавлением нулей в номера и за ОДИН шаг. Но сделать это можно для каждого издания/журнала/газеты по отдельности. То есть, отдельно для газеты 'Правда', отдельно для газеты 'Известия' и т.д.
    На примере Архитектурно-художественный еженедельника это реализуется так (возможны и др. варианты, но в данном случае показан сам принцип одношагового переименования)
     
    Rename mask filename (для другого издания эта строка будет иной!):
    [N1-40] [N-14,4]-000[N45-48]
    Галка [Е] cнята
    Галка RegExp установлена
    Найти
    ^([^\d]+\d{4}-)0*(\d{3}).*$
    Заменить на
    $1$2

    Всего записей: 681 | Зарегистр. 04-11-2018 | Отправлено: 20:32 04-01-2026
    kamenkapenza



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Архисложнейшая задача! Составить формулу, чтобы Бюллетень Всесоюзного Комитета по делам искусств при СНК Союза ССР (№ 16-17) - Коллектив авторов  01.01.1939 (6258759)  переименовать в Бюллетень Всесоюзного Комитета по делам искусств при СНК Союза ССР 1939-16-17
     
    Формула Найти
    ^([А-я- ]+)[ ,]+[^№]*№ (\d+)\D[^\.]+.{4}(\d{4}).*$
    Заменить на
    $1 $3-$2
    превращает в Бюллетень Всесоюзного Комитета по делам искусств при СНК Союза ССР 1939-16, т.е виден только один номер из двух.

    Всего записей: 758 | Зарегистр. 23-05-2021 | Отправлено: 22:44 05-01-2026
    www_world

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

    Цитата:
    Составить формулу, чтобы Бюллетень Всесоюзного Комитета по делам искусств при СНК Союза ССР (№ 16-17) - Коллектив авторов  01.01.1939 (6258759)  переименовать в Бюллетень Всесоюзного Комитета по делам искусств при СНК Союза ССР 1939-16-17

    Найти
    ^([А-я- ]+)[ ,]+[^№]*№ ([\d-]+)\D[^\.]+.{4}(\d{4}).*$
    Заменить на
    $1 $3-$2
     
    Подробнее...

    Всего записей: 681 | Зарегистр. 04-11-2018 | Отправлено: 03:04 06-01-2026 | Исправлено: www_world, 05:03 06-01-2026
    73



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    www_world
    jentoso
    Примите мои соболезнования по поводу попытки объяснить, вразумить и наставить на путь истинный kamenkapenza. Запомнил его на всю оставшуюся жизнь по одному книжному форуму. Проще было Ходже Насреддину научить своего ишака читать, да, того самого, который "либо я, либо эмир, либо ишак", чем объяснить хоть что-то  этому клиенту. Своей посылкой kamenkapenza в топик по ТС, уже привели тамошний народ в состояние фалломорфирования от титанических познаний клиента в варезных аспектах ТС. С вами будет то же самое, имеется в виду фалломорфирование, "Плавали - знаем!"

    Всего записей: 1714 | Зарегистр. 18-08-2012 | Отправлено: 05:08 06-01-2026
    kamenkapenza



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    www_world
    Большое спасибо! Гениально!
    73
    тебе
     
    Добавлено:
    www_world ]вам

    Всего записей: 758 | Зарегистр. 23-05-2021 | Отправлено: 10:30 06-01-2026 | Исправлено: kamenkapenza, 12:00 06-01-2026
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 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 98 99 100 101 102

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


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

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

    LiteCoin: LgY72v35StJhV2xbt8CpxbQ9gFY6jwZ67r

    Рейтинг.ru