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

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

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

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
    kamenkapenza



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Опять дико извиняюсь за своё непонимание!  
    Декоративное искусство СССР 1958, 1  01.01.1958
    Декоративное искусство СССР 1958, 2  01.01.1958
    Декоративное искусство СССР 1958, 3  01.01.1958 ............
    Декоративное искусство СССР 1958, 10  01.01.1958
    Декоративное искусство СССР 1958, 11  01.01.1958
    Декоративное искусство СССР 1958, 12  01.01.1958
     
    Можно придумать формулу, чтобы стало
    Декоративное искусство СССР 1958-01
    Декоративное искусство СССР 1958-02
    Декоративное искусство СССР 1958-03......
    Декоративное искусство СССР 1958-10
    Декоративное искусство СССР 1958-11
    Декоративное искусство СССР 1958-12,  
    т.е. однозначным номерам дописать ноль (например, 01), а двузначные оставить без изменения (например, 12)?
    Если это невозможно, то хотя бы привести к виду Декоративное искусство СССР 1958-1 и т.д.  
    Здесь отстутствует знак номера (№), поэтому предыдущие формулы не действуют.

    Всего записей: 749 | Зарегистр. 23-05-2021 | Отправлено: 20:05 08-01-2026 | Исправлено: kamenkapenza, 20:06 08-01-2026
    Mavrikii

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

    Цитата:
    Если это невозможно,

    возможно, за два прохода. сначала регуляркой, что дописывает с нулем, затем той, что для двух цифр
     
    ^(.+), (\d).*$  => $1-0$2
    ^(.+), (\d{2}).*$  => $1-$2

    Всего записей: 16810 | Зарегистр. 20-09-2014 | Отправлено: 20:14 08-01-2026
    kamenkapenza



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

    Цитата:
    ^(.+), (\d).*$  => $1-0$2

     
     
    Декоративное искусство СССР 1958, 1  01.01.1958
    Декоративное искусство СССР 1958, 2  01.01.1958
    Декоративное искусство СССР 1958, 3  01.01.1958  
    Декоративное искусство СССР 1958, 4  01.01.1958
    Декоративное искусство СССР 1958, 5  01.01.1958
    Декоративное искусство СССР 1958, 6  01.01.1958
    Декоративное искусство СССР 1958, 7  01.01.1958
    Декоративное искусство СССР 1958, 8  01.01.1958
    Декоративное искусство СССР 1958, 9  01.01.1958
    Декоративное искусство СССР 1958, 10  01.01.1958
    Декоративное искусство СССР 1958, 11  01.01.1958
    Декоративное искусство СССР 1958, 12  01.01.1958
     
    Как вы сказали, вставляю "Найти" ^(.+), (\d).*$  "Заменить на" $1-0$2
     
    Программа выставляет файлы в такой последовательности
     
    Декоративное искусство СССР 1958, 1  01.01.1958  
    Декоративное искусство СССР 1958, 10  01.01.1958
    Декоративное искусство СССР 1958, 11  01.01.1958  
    Декоративное искусство СССР 1958, 12  01.01.1958
    Декоративное искусство СССР 1958, 2  01.01.1958
    Декоративное искусство СССР 1958, 3  01.01.1958
    Декоративное искусство СССР 1958, 4  01.01.1958
    Декоративное искусство СССР 1958, 5  01.01.1958
    Декоративное искусство СССР 1958, 6  01.01.1958
    Декоративное искусство СССР 1958, 7  01.01.1958
    Декоративное искусство СССР 1958, 8  01.01.1958
    Декоративное искусство СССР 1958, 9  01.01.1958
     
    меняет на  
     
    Декоративное искусство СССР 1958-1
    Декоративное искусство СССР 1958-1
    Декоративное искусство СССР 1958-1
    Декоративное искусство СССР 1958-1
    Декоративное искусство СССР 1958-2
    Декоративное искусство СССР 1958-3
    Декоративное искусство СССР 1958-4
    Декоративное искусство СССР 1958-5
    Декоративное искусство СССР 1958-6
    Декоративное искусство СССР 1958-7
    Декоративное искусство СССР 1958-8
    Декоративное искусство СССР 1958-9
     
    10,11,12 ассоциируются как просто 1

    Всего записей: 749 | Зарегистр. 23-05-2021 | Отправлено: 21:24 08-01-2026 | Исправлено: kamenkapenza, 21:25 08-01-2026
    Mavrikii

    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    kamenkapenza
    зависит от программы и ее особенностей работы с регулярками.  
    написал общее выражение.
     

    Цитата:
    Программа выставляет файлы в такой последовательности

    регулярное выражение не занимается сортировкой
     

    Цитата:
    10,11,12 ассоциируются как просто 1

    потому что для вашего случая, возможно, лучше переписать как
    ^(.+), (\d)[^\d].*$  
     

    Цитата:
    меняет на  

    не меняет, где ноль то? в выражении замены он есть, в результате - нет, значит, скорее всего, где то накосячили

    Всего записей: 16810 | Зарегистр. 20-09-2014 | Отправлено: 21:30 08-01-2026 | Исправлено: Mavrikii, 21:32 08-01-2026
    kamenkapenza



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

    Цитата:
    ^(.+), (\d)[^\d].*$  

     
    Это вообще ничего не меняет. Ладно,  
    придется по старинке вручную каждый год поочередно вставлять без формул через маску
    Декоративное искусство СССР 1958-0 (счетчик) - для 0-9. Декоративное искусство СССР 1958- (счетчик) от 10 до 12.  
     
    А так бы в идеале хотелось бы формулу для работы с единичными номерами ( к примеру Декоративное искусство СССР 1958, 1  01.01.1958 - ... Декоративное искусство СССР 1958, 9  01.01.1958, которая бы меняла бы название на Декоративное искусство СССР 1958-01 - ... Декоративное искусство СССР 1958-09. Я бы в папке собирал журналы (газеты) с единичнымии номерами и переименовывал их в Тотал коммандере, а потом работал с двухзначными номерами, а потом трехзначными, т.е. чтобы упростить процесс создания формул. Для журналов формула с одним нулем, т.е. 01-09, а для газет с тремя нулями 001-009, двузнаяным один ноль 010-099, т.е. каждую группу обрабатывать отдельно (группе присваивается один или два нуля в зависимости от разряда и применяемой формулы).

    Всего записей: 749 | Зарегистр. 23-05-2021 | Отправлено: 22:18 08-01-2026 | Исправлено: kamenkapenza, 22:19 08-01-2026
    jentoso



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    kamenkapenza
    В два прохода:
    1 этап - обрабатываем номера 1-9
    Найти
    ^(Декоративное искусство СССР \d{4}),\s*(\d)\s+\d{2}\.\d{2}\.\d{4}(?:\.\w+)?$
    Заменить
    $1-0$2
    2 этап - обрабатываем номера 10-99
    Найти
    ^(Декоративное искусство СССР \d{4}),\s*(\d{2})\s+\d{2}\.\d{2}\.\d{4}(?:\.\w+)?$
    Заменить
    $1-$2

    Всего записей: 704 | Зарегистр. 25-10-2008 | Отправлено: 22:42 08-01-2026
    www_world

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

    Цитата:
    Здесь отстутствует знак номера (№), поэтому предыдущие формулы не действуют.  

    Стоит добавить звездочку и все по-прежнему работает
    ^([А-я- ]+)[ ,]+[^№]*№* ([\d-]+)\D[^\.]+.{4}(\d{4}).*$
    заменить на
    $1 $3-$2
    ____________________________
    Одношаговое переименование с нулями в ТС по описанному выше принципу:


    Всего записей: 668 | Зарегистр. 04-11-2018 | Отправлено: 07:52 09-01-2026
    jentoso



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

    Всего записей: 704 | Зарегистр. 25-10-2008 | Отправлено: 14:14 09-01-2026
    kamenkapenza



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

    Всего записей: 749 | Зарегистр. 23-05-2021 | Отправлено: 18:57 09-01-2026 | Исправлено: kamenkapenza, 19:06 09-01-2026
    sikemo

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Большое спасибо! Можно ди с помощью каких то формул (скорее всего про это надо говорить в теме про Тотал коммандер) создавать последовательные папки с нужным названием? Например, нужно создать папки Декоративное искусство с номером года, последовательно, т.е. Декоративное искусство 1952, Декоративное искусство 1953, ... - Декоративное искусство 1990, то есть задать какой то интервал присвоения от какой то цифры ( в данном случае 1953) до последней (к примеру 1990), то есть в этом случае получится 39 папок. Или к примеру папки от Известия 1932 до Известия 1990. Название неизменное, а числовое значение меняется от начального числа и до конечного числа
     
    не знаю, где затерялось этосообщение, можен, неактуально, но скажу в TC (у меня щас не стоит) есть опция создать из файла, а там уж можно доже в эл. таблицах насочинять названия и сохранить в файл, из которого они, папки будут получать названия. извините за оффтоп

    Всего записей: 1336 | Зарегистр. 27-11-2008 | Отправлено: 22:49 09-01-2026
    www_world

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

    Код:
    @echo OFF & CLS & CHCP 1251>NUL
    setlocal enableDelayedExpansion
    FOR /l %%N in (1952,1,1990) do (
        set "DIRNAME=Декоративное искусство %%N"
        md "!DIRNAME!"
    )

    нежели ТС (последний может легко и быстро переименовать нужное вам число уже готовых папок с любыми названиями (они не имеют значения если речь о шаблонных именах вашего типа). Например у вас 39 папок с любыми именами уже есть. В инструменте переименования достаточно вписать в поле Rename mask filename:
    Декоративное искусство [C1952+1]
    и вы получите нужные вам имена папок.
    Батник же можно сделать интерактивеым (последовательный запрос трех переменных - название, начальный год, конечный год и повесить его на кнопку ТС.
    Такой батник вам помогут создать в теме по батникам, а после этого, если захотите, в теме по ТС вам помогут готовый батник повесить на кнопку ТС.

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



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    www_world
    Вспомнил я про то, что раньше я интересовался этим вопросом: создание папок.. Сделал батник
     set i=1  
    MD %i%  
    :rep  
    set /A i+=1  
    MD %i%  
    if %i% LSS 200 goto rep
     При запуске создается 200 пустых папок. А потом в маску Декоративное искусство (счетчик) и присваиваю первый год в "начать с", и папки нумеруются в нужном порядке.

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

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    kamenkapenza
    Полагаю, что конечная задача sikemo решается проще, без отдельной многошаговой операции создания папок с заданными именами.
    Если бы он сказал, что имеет на текущий момент, и что хотел получить в самом конце, то, скорее всего, ему бы дали рецепт, как это сделать в один (максимум, в 2 шага) и возможно, лишь средствами ТС.
    Это следует из того, что не могу придумать ситуацию, когда нужно отдельным шагом создавать набор папок.
    Разве, что в случае, если файлы для этих папок отсутствуют. Но тогда, зачем эти пустые папки?...
    Ранее я уже приводил пример, каким образом раскидать файлы по папкам (по сути, любой иерархии) в ТС без отдельной операции создания папок.

    Всего записей: 668 | Зарегистр. 04-11-2018 | Отправлено: 21:47 10-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

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


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

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

    LiteCoin: LgY72v35StJhV2xbt8CpxbQ9gFY6jwZ67r

    Рейтинг.ru

    Рейтинг.ru