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

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

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

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

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

Ник
Сообщения: 1256
Зарегистрирован: Ср дек 15, 2004 09:33
Откуда: Москва

Сообщение Ник »

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

[^a-zA-Zа-яА-Я\s_0-9]
я это пишу в "Поиск с плагинами" и ставлю "Искать только в имени" и "regex"...

Вроде пока работает...
Xubuntu
Аватара пользователя
CaptainFlint
Сообщения: 6239
Зарегистрирован: Вт дек 14, 2004 22:34
Контактная информация:

Сообщение CaptainFlint »

Ник писал(а):я это пишу в "Поиск с плагинами" и ставлю "Искать только в имени" и "regex"...
Ну, можно и так, конечно...
Почему же, ё-моё, ты нигде не пишешь "ё"?
Ник
Сообщения: 1256
Зарегистрирован: Ср дек 15, 2004 09:33
Откуда: Москва

Сообщение Ник »

Скажите, плз, как найти все файлы, начинающиеся со строчных букв?

Я пишу следующее:

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

^[^A-ZА-Я0-9]
но оно не работает - не ищет ничего :(
Xubuntu
Аватара пользователя
CaptainFlint
Сообщения: 6239
Зарегистрирован: Вт дек 14, 2004 22:34
Контактная информация:

Сообщение CaptainFlint »

Попробуй отключить регистро-зависимый поиск. :)
Почему же, ё-моё, ты нигде не пишешь "ё"?
Ник
Сообщения: 1256
Зарегистрирован: Ср дек 15, 2004 09:33
Откуда: Москва

Сообщение Ник »

Пардон, это где?
По-моему, учёт регистра можно включать-выключать только при поиске по содержанию файлов, а не по именам...

Я же ищу через плагин с регеспами - хотя могу и просто поиск с регеспами...
Xubuntu
Ник
Сообщения: 1256
Зарегистрирован: Ср дек 15, 2004 09:33
Откуда: Москва

Сообщение Ник »

Кстати, есть хитрая задача:

разные деятели шлют новости, часто путая в названиях (и в именах файлов, соответственно) русское С и английское C.
В принципе фиг с ним, но, если такое в самом начале слова, то грубо нарушается сортировка в директориях, что очень неудобно...

Можно ли сделать регесп, который бы искал файлы, на первом месте в именах которых стоит английская C, а потом идёт любая русская буква или стоит любая русская буква через пробел?

Спасибо :)
Xubuntu
Ник
Сообщения: 1256
Зарегистрирован: Ср дек 15, 2004 09:33
Откуда: Москва

Сообщение Ник »

CaptainFlint писал(а):Попробуй отключить регистро-зависимый поиск. :)
Бляха-муха!
У меня в хелпе ТК написано:
Модификаторы
Модификаторы используются для изменения поведения регулярных выражений.
(?i) Отключает проверку верхнего/нижнего регистра. В Total Commander это значение включено по умолчанию для имён файлов.
(?-i) Включает проверку регистра.
Что на чём стояло? что включает - а что выключает???

Короче, вот это заработало, ищет файлы, начинающиеся с маленьких букв обоих языков только - поиск без плагинов, но с регеспами:

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

(?-i)^[^A-ZА-Я0-9]
Xubuntu
Аватара пользователя
CaptainFlint
Сообщения: 6239
Зарегистрирован: Вт дек 14, 2004 22:34
Контактная информация:

Сообщение CaptainFlint »

Ник писал(а):Можно ли сделать регесп, который бы искал файлы, на первом месте в именах которых стоит английская C, а потом идёт любая русская буква или стоит любая русская буква через пробел?
Какие проблемы?

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

C ?[а-я]
Почему же, ё-моё, ты нигде не пишешь "ё"?
Ник
Сообщения: 1256
Зарегистрирован: Ср дек 15, 2004 09:33
Откуда: Москва

Сообщение Ник »

Точнее:

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

^C ?[а-я]
и в поиск с плагинами - в именах файлов, с регеспами.

Только зачем пробел перед знаком вопроса - я так и не понял :(
Xubuntu
Аватара пользователя
CaptainFlint
Сообщения: 6239
Зарегистрирован: Вт дек 14, 2004 22:34
Контактная информация:

Сообщение CaptainFlint »

Ник писал(а):Только зачем пробел перед знаком вопроса - я так и не понял
Ты ж сам писал:
Ник писал(а):или стоит любая русская буква через пробел?
Я так выражение и составил: либо английская "C", после которой сразу русская буква, либо английская "C", за которой пробел, а потом русская буква.
Почему же, ё-моё, ты нигде не пишешь "ё"?
Аватара пользователя
Alextp
Сообщения: 4957
Зарегистрирован: Вс фев 06, 2005 17:21

Сообщение Alextp »

Ник, ? означает "0 или 1 вхождение пред символа".
Т.е. " ?" означает "пробел есть или пробела нет".

Мой пример: ищу URL'ы. RegEx:

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

[a-z]+://[a-z.\d/_]+
Ник
Сообщения: 1256
Зарегистрирован: Ср дек 15, 2004 09:33
Откуда: Москва

Сообщение Ник »

Спасибо, мужики :)
Я просто психологически не воспринял пробел как символ - устал к вечеру...
Xubuntu
Ник
Сообщения: 1256
Зарегистрирован: Ср дек 15, 2004 09:33
Откуда: Москва

Сообщение Ник »

Поможите, плз :)

Тут Гугл почему-то путает русский и украинский языки и шлёт некоторые новости с заголовками на украинском.
Мне нужно убрать из них символы, которые ТК и ZIP упорно считают "нелатинскими", т.е.:
i (в чём разница с латинским "i" я не знаю, но она есть)
ї
є


При попытке поиска и замены, ТК меняет все "i" - и украинские, и английские (получается "Lиght" вместо "Light")...
Как их различить и как правильно написать выражение для поиска и замены?
Xubuntu
Аватара пользователя
Alextp
Сообщения: 4957
Зарегистрирован: Вс фев 06, 2005 17:21

Сообщение Alextp »

Ник, в regex можно указывать символ по юникодному коду.
(Не проверял в Тотале!)
\a alarm, that is, the BEL character (hex 07)
\cx "control-x", where x is any character
\e escape (hex 1B)
\f formfeed (hex 0C)
\n newline (hex 0A)
\r carriage return (hex 0D)
\t tab (hex 09)
\ddd character with octal code ddd, or backreference
\xhh character with hex code hh
\x{hhh..} character with hex code hhh..
After \x, from zero to two hexadecimal digits are read (letters can be in upper or lower case). Any number of hexadecimal digits may appear between \x{ and }, but the value of the character code must be less than 256 in non-UTF-8 mode, and less than 2**31 in UTF-8 mode (that is, the maximum hexadecimal value is 7FFFFFFF).
Ник
Сообщения: 1256
Зарегистрирован: Ср дек 15, 2004 09:33
Откуда: Москва

Сообщение Ник »

Спасибо, конечно, но как этот код для украинской кириллицы определить?!?!
Xubuntu
Ответить