К ТСКВ: примеры регулярных выражений

Обсуждение Total Commander. Установка, использование, настройка, решение проблем, скрытые функции. Обсуждение новых версий.

Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер

Как часто вы пользуетесь регулярными выражениями (RegEx)?

Раз в день
36
34%
Раз в неделю
20
19%
Раз в месяц
29
27%
А что это такое?
21
20%
 
Всего голосов: 106

mitrich
Сообщения: 2
Зарегистрирован: Пт янв 21, 2005 00:30
Откуда: Белгород
Контактная информация:

Сообщение mitrich »

Подскажите, пожалуйста, как проще всего поставить точку после первых двух символов в названиях файлов?
То есть из "12Привет" получить "12.Привет"
Аватара пользователя
Aquila
Сообщения: 35
Зарегистрирован: Чт сен 22, 2016 14:27

Сообщение Aquila »

Search for: (..)
Replace with $1.
«Two things are infinite: the universe and the human stupidity.
... and a'm not so sure about the universe».
Albert Einstein
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

mitrich
Проще всего в инструменте группового переименования без всяких регулярных выражений указать в поле для маски имени: [N1-2].[N3-]
Даже самая богатая фантазия
Не представит себе наши безобразия.
mitrich
Сообщения: 2
Зарегистрирован: Пт янв 21, 2005 00:30
Откуда: Белгород
Контактная информация:

Сообщение mitrich »

Aquila, Avada
Спасибо!! Да, я глубоко полез(
N1Tron1X
Сообщения: 2
Зарегистрирован: Вт окт 27, 2020 11:58

Регулярное выражение для имени файла

Сообщение N1Tron1X »

Нужно составить регулярное выражение для переименования файлов и папок следующего вида:

1. Папка
АБВГ.123456.789 Кабель питания
АБВГ.123456.789-01 Кабель питания
АБВГ.123456.789-001 Кабель питания
2. Файлы
АБВГ.123456.789_СБ Кабель питания.pdf
АБВГ.123456.789_СП Кабель питания.pdf
АБВГ.123456.789_ВП Кабель питания.pdf
АБВГ.123456.789-01_СБ Кабель питания.pdf
АБВГ.123456.789-01_СП Кабель питания.pdf
АБВГ.123456.789-01_ВП Кабель питания.pdf
АБВГ.123456.789-001_СБ Кабель питания.pdf
АБВГ.123456.789-001_СП Кабель питания.pdf
АБВГ.123456.789-001_ВП Кабель питания.pdf

Цель регулярного выражения - использование при групповом переименовании файлов для смены децимального номера, т.е. АБВГ.123456.789 --> ДЕЖЗ.234567.890.

Составил выражение

Код: Выделить всё

\W{4}\.\d{6}\.\d{3}
но оно работает только для файлов, а при попытке использовать его для папки не находит совпадений.

Если из выражения вырезать \.\d{3} , то совпадения находятся, но в имени папки остаётся .789.

Помогите составить универсальное регулярное выражение.
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

N1Tron1X
Создавать для каждого запроса по регулярным выражениям отдельную тему — слишком большая роскошь. Пока что перенесено по принадлежности в общую тему по регуляркам. И не уверен, что папки/файлы тут единственнная проблема. Составленное вами выражение — это просто произвольный набор символов в общем виде, разбитых на группы точками. Удалить их, предположим, легко. Но менять их вы их с наращиванием букв и цифр на что-то другое как собираетесь?
Даже самая богатая фантазия
Не представит себе наши безобразия.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

N1Tron1X писал(а):для папки не находит совпадений.
Может, в диалоге группового переименования, галка для [E] "Заменять также в расширениях файлов", напрасно убрана?
N1Tron1X
Сообщения: 2
Зарегистрирован: Вт окт 27, 2020 11:58

Сообщение N1Tron1X »

sa
Да, Вы правы! Не думал, что эта галка может сыграть роль при переименовании папок, которые не имеют расширения.

Рабочая регулярка, если кому понадобится

Код: Выделить всё

^\W{4}(.*)\d
*в имени файлов/папок не должно быть цифр после децимального номера

Спасибо!
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

N1Tron1X
Во-первых, рабочая регулярка — для чего? При нормальном использовании в ИГП регулярные выражения позволяют вот именно что выполнять переименование от и до, ваши (что то, что другое) этого не делают. Кому и для чего она может понадобиться, не подскажете? Выше уже задавался вопрос, который вы успешно проигнорировали.
Во-вторых, извольте нормально оформлять цитаты: кнопкой "цитата" надо уметь пользоваться. Излишества убраны (в данном случае цитата вообще не нужна).
Что касается самого вопроса, то менять умолчальное состояние опций, не разобравшись как следует в их смысле, никогда не следует, а к расширению в папках приравнивается то, что идёт после последней точки.
Даже самая богатая фантазия
Не представит себе наши безобразия.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Avada писал(а):выполнять переименование от и до
Задача сводится к разовой замене децимального номера для группы файлов и папок: регулярка вводится в поле "Найти:", а новый децимальный номер в поле "Заменить на:".
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

sa
Возможно, но если, согласно примеру, точный исходный децимальный номер меняется на точный другой номер, то так ли здесь необходимы регулярные выражения? Во всяком случае, из сообщённых условий другой трактовки ситуации не видно. И есть предложение дальше за автора запроса то, что ему надо, не придумывать. Захочет отвечать — сам ответит. Не захочет — его дело, тем более что исходная проблема с выключенной опцией исчерпана.
Даже самая богатая фантазия
Не представит себе наши безобразия.
ToniZa
Сообщения: 11
Зарегистрирован: Ср апр 01, 2020 20:33

Требуется РВ для группового переименования каталогов

Сообщение ToniZa »

Условия:

Есть набор каталогов, созданных по одинаковому принципу: - Составление нескольких слов вместе, в слитное написание. Причем каждое слово начинается со Строчной буквы. Буквы могут применяться смешанные - как латиница, так и кириллица. Т.е название каталога может иметь (обобщенно!) следующий вид:

ProjectTypeАвторNoName. При этом длина названия (общее кол-во символов в названии) не регламентированно. Т.е условно может быть любым.

Задача - написать РВ, позволяющее переименовывать эти названия в следующий вид:

Project_Type_Автор_No_Name
Т.е - перед каждой Строчной буквой, должно появиться подчеркивание, НО - его не должно быть в конце названия и в начале, соответственно
ToniZa -
Аватара пользователя
CaptainFlint
Сообщения: 6239
Зарегистрирован: Вт дек 14, 2004 22:34
Контактная информация:

Сообщение CaptainFlint »

ToniZa
Регулярное выражение.
Найти: (?-i)\B[A-ZА-ЯЁ]
Заменить на: _$0

Побочный эффект: заменяться не будет не только в начале слова, а ещё и после пробела, но насколько я понял, в исходных именах пробелов всё равно нет.
Также непонятно, что имеется в виду под "в конце названия". Если подчёркивание добавляется лишь перед буквой, то оно в принципе не может оказаться в самом конце.
Почему же, ё-моё, ты нигде не пишешь "ё"?
ToniZa
Сообщения: 11
Зарегистрирован: Ср апр 01, 2020 20:33

Сообщение ToniZa »

CaptainFlint писал(а):ToniZa
...насколько я понял, в исходных именах пробелов всё равно нет.
Да, правильно - нет.
Если подчёркивание добавляется лишь перед буквой, то оно в принципе не может оказаться в самом конце.
Просто я пытался сам решить эту задачу и, судя по всему, заходил "не с той стороны". Вот и предупредил, "на всякий случай".
ToniZa -
zoog
Сообщения: 7
Зарегистрирован: Вт ноя 20, 2012 16:49

Поиск-замена с регэксп.

Сообщение zoog »

Привет.
Пытаюсь повторить простое действие из хэлпа: замену типа "автор - год - альбом - трэк" на "год автор".
(.*) - (.*) - (.*) - (.*) --- $2 $1
В простейшем случае, когда формат постоянен - работает, но если присутствует разное число полей - то всё рушится. Как я понял, нумерация полей произврдится с последнего, а мне надо перетасовать первые.
Это решаемо или багофича регэкспов?
Тиа.
Ответить