powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Regex - фильтры по именам файлов
10 сообщений из 10, страница 1 из 1
Regex - фильтры по именам файлов
    #38275072
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги, прошу помощи в написании регулярок

Дано: имена файлов с разнообразными расширениями (в виде List<string>, где каждый элемент - имя файла)
"121.zip", "2.rar", "3.txt", "4.zip", "5.doc", "66.unzip", "7 7.unz"

Нужно: Найти файлы с расширением zip
Пример: "121.zip", "4.zip",
Сделал как: "(\.zip)$"

Нужно: Найти файлы с расширением, отсутствующим в списке.
Пример: "3.txt", "5.doc", "66.unzip", "7 7.unz"
Пытался сделать как-то так, но не осилил: (^(zip|rar))$ (вариантов было много, но не один не показал нужный результат)

Ну и наконец,
Нужно: Найти файлы, в имени которых начиная с опреденного места идут указанные символы
Пример: "121.zip"
Нужно что то вроде: начиная со второго символа чтобы было "21" (тут я вообще не знаю, с чего начать)
...
Рейтинг: 0 / 0
Regex - фильтры по именам файлов
    #38275136
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79,

тут регэкс не нужен
для 1-2 EndsWith
для 3 IndexOf
...
Рейтинг: 0 / 0
Regex - фильтры по именам файлов
    #38275481
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pation,

Знаю, но я привел частные случаи. Мне интересно именно регулярками.
...
Рейтинг: 0 / 0
Regex - фильтры по именам файлов
    #38275490
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79Нужно: Найти файлы с расширением zip
Пример: "121.zip", "4.zip",
Код: c#
1.
Regex.isMatch(name, @"\.zip$", RegexOptions.IgnoreCase)



Arm79Нужно: Найти файлы с расширением, отсутствующим в списке.
Пример: "3.txt", "5.doc", "66.unzip", "7 7.unz"
Код: c#
1.
!Regex.isMatch(name, @"\.(txt|doc|unzip|unz)$", RegexOptions.IgnoreCase)



Arm79Нужно: Найти файлы, в имени которых начиная с опреденного места идут указанные символы
Пример: "121.zip"
Нужно что то вроде: начиная со второго символа чтобы было "21" (тут я вообще не знаю, с чего начать)
Код: c#
1.
Regex.isMatch(name, @"^.21", RegexOptions.IgnoreCase)
...
Рейтинг: 0 / 0
Regex - фильтры по именам файлов
    #38275540
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Яростный МечArm79Нужно: Найти файлы с расширением, отсутствующим в списке.
Пример: "3.txt", "5.doc", "66.unzip", "7 7.unz"
Код: c#
1.
!Regex.isMatch(name, @"\.(txt|doc|unzip|unz)$", RegexOptions.IgnoreCase)

впрочем, можно и так, без отрицания:
Код: c#
1.
Regex.IsMatch(name, @"\.(?=[^\.]+$)(?!(txt|doc|unzip|unz)$)", RegexOptions.IgnoreCase)
...
Рейтинг: 0 / 0
Regex - фильтры по именам файлов
    #38276116
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Яростный Меч,

Немного не так.

Есть определнный алгоритм: перебор файлов в каталоге, применение к ним именно Regex.IsMatch, по результатам - поднятие того или иного обработчика. Поэтому вариант с отрицанием не катит.

Что касается последнего варианта, то насколько я понял, "\.(?=[^\.]+$)(?!(txt|doc|unzip|unz)$)" - это перечисление ДОПУСТИМЫХ типов. Возможно, я понял все превратно, тк регулярки для меня темный лес.
А нужно: файлы с любым расширением, исключая некоторые.
Что то типа такого: "^.+\.(^(zip|rar|7z))". Правда именно так не работает :-(

"^.21" - тоже не пойдет (или я не врубился). Это любой символ + 21. А если с третьего или четвертого нужно?
...
Рейтинг: 0 / 0
Regex - фильтры по именам файлов
    #38276516
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79Что касается последнего варианта, то насколько я понял , "\.(?=[^\.]+$)(?!(txt|doc|unzip|unz)$)" - это перечисление ДОПУСТИМЫХ типов.надо было не "понимать", а пробовать.
Arm79"^.21" - тоже не пойдет (или я не врубился). Это любой символ + 21.
А если с третьего
Код: c#
1.
^.{2}21


Arm79или четвертого нужно?
Код: c#
1.
^.{3}21
...
Рейтинг: 0 / 0
Regex - фильтры по именам файлов
    #38276627
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Яростный МечArm79Что касается последнего варианта, то насколько я понял , "\.(?=[^\.]+$)(?!(txt|doc|unzip|unz)$)" - это перечисление ДОПУСТИМЫХ типов.надо было не "понимать", а пробовать.

Спасибо, уже не в первый раз помогаете с ними.
Объясните, а зачем нужно "(?=[^\.]+$)" ? Для чего проверять спереди наличие иных знаков? Разве последующий Негативный просмотр вперёд не компенсируетналичие этих знаков?
...
Рейтинг: 0 / 0
Regex - фильтры по именам файлов
    #38276773
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79Объясните, а зачем нужно "(?=[^\.]+$)" ? Для чего проверять спереди наличие иных знаков? Разве последующий Негативный просмотр вперёд не компенсируетналичие этих знаков?рассмотрим весь регекс по частям:

\. - ищем точку.
(?=[^\.]+$) - за найденной точкой не должно быть точек, т.е. точка последняя, и дальше идет расширение (непустое).
(?!(txt|doc|unzip|unz)$) - за найденной точкой нет расширения из списка.

если бы не было второго пункта, то файл "jopa.jlo.doc" проскакивает, т.к. рассматривается первая точка, за которой нет "плохого" расширения
...
Рейтинг: 0 / 0
Regex - фильтры по именам файлов
    #38276809
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ясно, спасибо!
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Regex - фильтры по именам файлов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]