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

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

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

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

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

JKT
Сообщения: 116
Зарегистрирован: Вт сен 22, 2009 23:01
Откуда: Харьков

Сообщение JKT »

Уважаемые, подскажите пожалуйста рэгэксп
Есть имя файла "Имя Фамилия" (без кавычек) , надо переименовать "Фамилия Имя", - переставить слова (разделитель - пробел)
Спасибо
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Как вариант, заменить ([^ \.]*) *([^ \.]*)(.*) на $2 $1$3 при установленных галке рег выражения и замены имени целиком (рядом). Предполагается, что имя и фамилия не содержат точек.
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

JKT
Другой вариант (расширение обязательно есть, точка только перед ним):
Найти: (.*) (.*)\.
Заменить на: $2 $1\.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Serge Yolkin
Сообщения: 664
Зарегистрирован: Сб июл 25, 2009 11:12

Сообщение Serge Yolkin »

Или (\S+)\s(\S+)(\..*)$ заменить на $2 $1$3, если пробел только один - между именем и фамилией (доллар в конце добавлен на случай, если все-таки не один, хоть ошибки не будет). А вообще-то, пример на тему "как поменять местами имя и фамилию" - чуть не на каждом сайте по регэкспам...

Добавлено спустя 1 час 2 минуты:

Кстати, есть довольно удобная весч для отладки регэкспов: http://regexpres.narod.ru/calculator.html Сам пользуюсь.
JKT
Сообщения: 116
Зарегистрирован: Вт сен 22, 2009 23:01
Откуда: Харьков

Сообщение JKT »

MVV
Спасибо!
Все работает!
Avada, Serge Yolkin , большой сенк за участие, другие варианты завтра попробую. Как попробую - отпишусь.
А вообще-то, может сделать отдельную ветку, где будут готовые решения по регэкспам, конкретные примеры? Как тут есть "обсуждения" . Тут обсуждения, а вдругой готовые?
Дело вдругом...... Рэгэкспы ТС и других прог могут по синтаксису отличаться. Я вот, например тэги аудиофайлов редакчу в mp3tag там малость синтаксис отличается. От потому и спросил и там и тут. :)

P.S.
Вот мои пять копеек в копилку:
Имеем текст "ХХХХ - УУУУ" - Задача: оставить только ХХХХ (разделитель " - " (пробел-дефис-пробел) - часто встречается в тэгах аудио "артист - песня". Задача: оставить только "XXXX". Решение;

(.*?)\s+-.*
$1
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

JKT писал(а):А вообще-то, может сделать отдельную ветку, где будут готовые решения по регэкспам, конкретные примеры? Как тут есть "обсуждения" . Тут обсуждения, а вдругой готовые?
В этой теме уже всё вперемешку, такой она, увы, и останется. Сама по себе мысль о разделении здравая, но у нас на разных подфорумах много чего предлагалось разделять, так что будет какая-то очерёдность обсуждения и реализации. Пока предложение принято к сведению.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Аватара пользователя
Olaf
Сообщения: 11
Зарегистрирован: Чт мар 23, 2006 17:42

Сообщение Olaf »

Здравствуйте, мне требуется помощь в такой проблеме: нужно использовать подстановочные символы в качестве шаблона для выделения/фильтрации файлов.
Есть папка с файлами, из которых мне нужно выделить
1) те, которые начинаются на 4 цифры, после которых идёт пробел или буква и пробел (например "1234 1234.1st" и "1234b 1234 1234.1st")
2) те, которые начинаются с 5 и более цифр.
пока что я застрял на первом же пункте :?
пытаюсь написать "\b\d{4}? .", но при этом у меня выделяются и те файлы, которые содержат в себе фрагмент, отделённый пробелом, после которой идёт искомая часть (например файл "abcd 1234 1234.1st")
Что я не так делаю? Как это сделать правильно? Заранее благодарен
Аватара пользователя
Rodny
Сообщения: 949
Зарегистрирован: Ср янв 24, 2007 00:59
Откуда: Могилёв, Беларусь

Сообщение Rodny »

Буквы только латинские?
1) Найти: ^\d{4}[a-zA-Z]?\s
2) Найти: ^\d{5,}
Аватара пользователя
Olaf
Сообщения: 11
Зарегистрирован: Чт мар 23, 2006 17:42

Сообщение Olaf »

Rodny, да, так всё работает, спасибо огромное!
upd: а как сделать наоборот - показывать все файлы, кроме этих двух типов?
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

C учётом реального содержания этой темы она переносится из "Секретов и советов" в "Общие вопросы". Справочник по регэкспам тут, увы, не получился...
Даже самая богатая фантазия
Не представит себе наши безобразия.
Аватара пользователя
Rodny
Сообщения: 949
Зарегистрирован: Ср янв 24, 2007 00:59
Откуда: Могилёв, Беларусь

Сообщение Rodny »

Olaf писал(а):а как сделать наоборот - показывать все файлы, кроме этих двух типов?
Что-то типа: ^([^0-9]{4}[^a-zA-Z]?\S|[^0-9]{5,}).+
Аватара пользователя
Olaf
Сообщения: 11
Зарегистрирован: Чт мар 23, 2006 17:42

Сообщение Olaf »

Rodny, буду пробовать, спасибо ещё раз!
Аватара пользователя
Strek
Сообщения: 205
Зарегистрирован: Вс окт 17, 2010 23:10
Контактная информация:

Сообщение Strek »

Как искать ссылки http и https?
Аватара пользователя
Rodny
Сообщения: 949
Зарегистрирован: Ср янв 24, 2007 00:59
Откуда: Могилёв, Беларусь

Сообщение Rodny »

Где? В принципе, найти: "https?://" и т.д.
Аватара пользователя
Strek
Сообщения: 205
Зарегистрирован: Вс окт 17, 2010 23:10
Контактная информация:

Сообщение Strek »

Rodny писал(а):Где? В принципе, найти: "https?://" и т.д.
В текстовых файлах
Ответить