Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Регулярные выражения - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Регулярные выражения
wvlas Дата: Пятница, 19.04.2013, 17:22 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Здравствуйте!

Есть строка file="D:\Папка\Лицензия.mpg" file="D:\Мамка\Ролик.mov" file="D:\Дедка\Любое имя.avi"

\\(.*?).mpg выводит только
\Папка\Лицензия.mpg

а нужно нужно регулярным выражением вывести (найти) имена файлов без каталогов и расширений
Лицензия
Ролик
Любое имя
 
Ответить
СообщениеЗдравствуйте!

Есть строка file="D:\Папка\Лицензия.mpg" file="D:\Мамка\Ролик.mov" file="D:\Дедка\Любое имя.avi"

\\(.*?).mpg выводит только
\Папка\Лицензия.mpg

а нужно нужно регулярным выражением вывести (найти) имена файлов без каталогов и расширений
Лицензия
Ролик
Любое имя

Автор - wvlas
Дата добавления - 19.04.2013 в 17:22
nilem Дата: Суббота, 20.04.2013, 10:04 | Сообщение № 2
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
Привет, wvlas
если пути файлов записаны именно так, в одну строку, то можно попробовать:

или
 
Ответить
СообщениеПривет, wvlas
если пути файлов записаны именно так, в одну строку, то можно попробовать:

или

Автор - nilem
Дата добавления - 20.04.2013 в 10:04
nerv Дата: Суббота, 20.04.2013, 13:55 | Сообщение № 3
Группа: Редакторы
Ранг: Обитатель
Сообщений: 431
Репутация: 193 ±
Замечаний: 0% ±

с расширением
[vba]
Код
[^\\]+
[/vba]


Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


YM 41001156540584 / WM WMR R21924176233

https://github.com/nervgh/vba


Сообщение отредактировал nerv - Суббота, 20.04.2013, 14:00
 
Ответить
Сообщениес расширением
[vba]
Код
[^\\]+
[/vba]

Автор - nerv
Дата добавления - 20.04.2013 в 13:55
ikki Дата: Суббота, 20.04.2013, 23:58 | Сообщение № 4
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
если у каждого файла есть расширение:
[vba]
Код
Sub t()
     s = "file=""D:\Папка\Лицензия.mpg"" file=""D:\Мамка\Ролик.mov"" file=""D:\Дедка\Любое имя.avi"""
     With CreateObject("vbscript.regexp")
         .Pattern = "\\([^\\""]*)(\.[^\.]+)"""
         .Global = True
         Set mo = .Execute(s)
     End With
     If mo.Count Then
         For i = 0 To mo.Count - 1
             Debug.Print mo(i).submatches(0)
         Next
     End If
End Sub
[/vba]


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki


Сообщение отредактировал ikki - Суббота, 20.04.2013, 23:59
 
Ответить
Сообщениеесли у каждого файла есть расширение:
[vba]
Код
Sub t()
     s = "file=""D:\Папка\Лицензия.mpg"" file=""D:\Мамка\Ролик.mov"" file=""D:\Дедка\Любое имя.avi"""
     With CreateObject("vbscript.regexp")
         .Pattern = "\\([^\\""]*)(\.[^\.]+)"""
         .Global = True
         Set mo = .Execute(s)
     End With
     If mo.Count Then
         For i = 0 To mo.Count - 1
             Debug.Print mo(i).submatches(0)
         Next
     End If
End Sub
[/vba]

Автор - ikki
Дата добавления - 20.04.2013 в 23:58
ikki Дата: Воскресенье, 21.04.2013, 07:42 | Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
для возможного случая с отсутствием расширений для некоторых файлов "чистого" решения на регулярках не придумал.
но, думаю, такой вариант будет даже быстрее.
да и понятно без комментариев.

[vba]
Код
Sub t()
       s = "file=""D:\Папка\Лицензия.mpg"" file=""D:\Мамка\Ролик"" file=""D:\Дедка\Любое имя.avi"""
       With CreateObject("vbscript.regexp")
'         .Pattern = "\\([^\\""]*)(\.[^\.]+)"""
           .Pattern = "\\([^\\""]*)"""
           .Global = True
           Set mo = .Execute(s)
       End With
       If mo.Count Then
           For i = 0 To mo.Count - 1
               s = mo(i).submatches(0)
               If InStrRev(s, ".") Then s = Left(s, InStrRev(s, ".") - 1)
               Debug.Print s
           Next
       End If
End Sub
[/vba]


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki


Сообщение отредактировал ikki - Воскресенье, 21.04.2013, 07:43
 
Ответить
Сообщениедля возможного случая с отсутствием расширений для некоторых файлов "чистого" решения на регулярках не придумал.
но, думаю, такой вариант будет даже быстрее.
да и понятно без комментариев.

[vba]
Код
Sub t()
       s = "file=""D:\Папка\Лицензия.mpg"" file=""D:\Мамка\Ролик"" file=""D:\Дедка\Любое имя.avi"""
       With CreateObject("vbscript.regexp")
'         .Pattern = "\\([^\\""]*)(\.[^\.]+)"""
           .Pattern = "\\([^\\""]*)"""
           .Global = True
           Set mo = .Execute(s)
       End With
       If mo.Count Then
           For i = 0 To mo.Count - 1
               s = mo(i).submatches(0)
               If InStrRev(s, ".") Then s = Left(s, InStrRev(s, ".") - 1)
               Debug.Print s
           Next
       End If
End Sub
[/vba]

Автор - ikki
Дата добавления - 21.04.2013 в 07:42
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!