|
Regex - фильтры по именам файлов
|
|||
---|---|---|---|
#18+
Коллеги, прошу помощи в написании регулярок Дано: имена файлов с разнообразными расширениями (в виде 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" (тут я вообще не знаю, с чего начать) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2013, 15:53 |
|
Regex - фильтры по именам файлов
|
|||
---|---|---|---|
#18+
Arm79, тут регэкс не нужен для 1-2 EndsWith для 3 IndexOf ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2013, 16:28 |
|
Regex - фильтры по именам файлов
|
|||
---|---|---|---|
#18+
pation, Знаю, но я привел частные случаи. Мне интересно именно регулярками. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2013, 20:51 |
|
Regex - фильтры по именам файлов
|
|||
---|---|---|---|
#18+
Arm79Нужно: Найти файлы с расширением zip Пример: "121.zip", "4.zip", Код: c# 1.
Arm79Нужно: Найти файлы с расширением, отсутствующим в списке. Пример: "3.txt", "5.doc", "66.unzip", "7 7.unz" Код: c# 1.
Arm79Нужно: Найти файлы, в имени которых начиная с опреденного места идут указанные символы Пример: "121.zip" Нужно что то вроде: начиная со второго символа чтобы было "21" (тут я вообще не знаю, с чего начать) Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2013, 21:03 |
|
Regex - фильтры по именам файлов
|
|||
---|---|---|---|
#18+
Яростный МечArm79Нужно: Найти файлы с расширением, отсутствующим в списке. Пример: "3.txt", "5.doc", "66.unzip", "7 7.unz" Код: c# 1.
впрочем, можно и так, без отрицания: Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2013, 21:47 |
|
Regex - фильтры по именам файлов
|
|||
---|---|---|---|
#18+
Яростный Меч, Немного не так. Есть определнный алгоритм: перебор файлов в каталоге, применение к ним именно Regex.IsMatch, по результатам - поднятие того или иного обработчика. Поэтому вариант с отрицанием не катит. Что касается последнего варианта, то насколько я понял, "\.(?=[^\.]+$)(?!(txt|doc|unzip|unz)$)" - это перечисление ДОПУСТИМЫХ типов. Возможно, я понял все превратно, тк регулярки для меня темный лес. А нужно: файлы с любым расширением, исключая некоторые. Что то типа такого: "^.+\.(^(zip|rar|7z))". Правда именно так не работает :-( "^.21" - тоже не пойдет (или я не врубился). Это любой символ + 21. А если с третьего или четвертого нужно? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2013, 11:39 |
|
Regex - фильтры по именам файлов
|
|||
---|---|---|---|
#18+
Arm79Что касается последнего варианта, то насколько я понял , "\.(?=[^\.]+$)(?!(txt|doc|unzip|unz)$)" - это перечисление ДОПУСТИМЫХ типов.надо было не "понимать", а пробовать. Arm79"^.21" - тоже не пойдет (или я не врубился). Это любой символ + 21. А если с третьего Код: c# 1.
Arm79или четвертого нужно? Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2013, 13:43 |
|
Regex - фильтры по именам файлов
|
|||
---|---|---|---|
#18+
Яростный МечArm79Что касается последнего варианта, то насколько я понял , "\.(?=[^\.]+$)(?!(txt|doc|unzip|unz)$)" - это перечисление ДОПУСТИМЫХ типов.надо было не "понимать", а пробовать. Спасибо, уже не в первый раз помогаете с ними. Объясните, а зачем нужно "(?=[^\.]+$)" ? Для чего проверять спереди наличие иных знаков? Разве последующий Негативный просмотр вперёд не компенсируетналичие этих знаков? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2013, 14:26 |
|
Regex - фильтры по именам файлов
|
|||
---|---|---|---|
#18+
Arm79Объясните, а зачем нужно "(?=[^\.]+$)" ? Для чего проверять спереди наличие иных знаков? Разве последующий Негативный просмотр вперёд не компенсируетналичие этих знаков?рассмотрим весь регекс по частям: \. - ищем точку. (?=[^\.]+$) - за найденной точкой не должно быть точек, т.е. точка последняя, и дальше идет расширение (непустое). (?!(txt|doc|unzip|unz)$) - за найденной точкой нет расширения из списка. если бы не было второго пункта, то файл "jopa.jlo.doc" проскакивает, т.к. рассматривается первая точка, за которой нет "плохого" расширения ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2013, 15:11 |
|
|
start [/forum/topic.php?fid=20&msg=38275136&tid=1404615]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
61ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 158ms |
0 / 0 |