powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / RegExp_регулярные выражения VBA
11 сообщений из 11, страница 1 из 1
RegExp_регулярные выражения VBA
    #39928307
antonkashin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет. Подскажите, можно ли из строки достать регулярными выражениями клиентский номер.Клиентский номер может содержать большие латинские буквы и цифры и иметь длину в 6 символов. Строка представляет из себя путь к файлу. Пример C:\Папка\Папка\еще папка\Иванов Иван Иванович_SQ1234.xls
Пробовал вот таким шаблоном "[A-Z0-9]{6}". Все хорошо работает, до тех пор пока не встречается название папки на английском языке в верхнем регистре. Тогда берется первые 6 символов названия папки.
...
Рейтинг: 0 / 0
RegExp_регулярные выражения VBA
    #39928310
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А в чем проблема обойтись без регулярки, простым MID$?
...
Рейтинг: 0 / 0
RegExp_регулярные выражения VBA
    #39928313
antonkashin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,
Проблема в том что клиентский номер может быть в названии файла, а может быть создана папка с ФИО и клиентским номером, а в ней уже просто эксельник с рандомным названием. Или название файла может начинаться с клиентского номера, а потом уже ФИО.
...
Рейтинг: 0 / 0
RegExp_регулярные выражения VBA
    #39928314
Фотография Shamanus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antonkashin,

разве что както так [A-Z0-9]{6}[.]{1} или так [A-Z0-9]{6}[.xls]{4}
...
Рейтинг: 0 / 0
RegExp_регулярные выражения VBA
    #39928316
Фотография Shamanus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а, не учел, что нужен номер клиента, а не имя экселя
...
Рейтинг: 0 / 0
RegExp_регулярные выражения VBA
    #39928317
Фотография Shamanus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а лидирующее подчеркивание всегда ?
[_]{1}[A-Z0-9]{6}
...
Рейтинг: 0 / 0
RegExp_регулярные выражения VBA
    #39928322
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antonkashin
до тех пор пока не встречается название папки на английском языке в верхнем регистре
что мешает разбить путь на составляющие и только с именем файла разбираться?
Код: vbnet
1.
2.
3.
4.
dim asp,filename$,res_str$
filename = "C:\Папка\Папка\еще папка\Иванов Иван Иванович_SQ1234.xls"
asp = Split(filename,"\")
res_str = asp(UBound(asp))



или без тяжелой артилерии
Код: vbnet
1.
2.
3.
Dim lp&
lp = InStrRev(filename, "\")
res_str = Mid(filename, lp + 1, Len(filename) - lp)
...
Рейтинг: 0 / 0
RegExp_регулярные выражения VBA
    #39928327
antonkashin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
The_Prist,
Количество папок может быть разное и клиенткий номер может содержаться или в названии папки или в названии файла
...
Рейтинг: 0 / 0
RegExp_регулярные выражения VBA
    #39928328
antonkashin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shamanus, не всегда, может быть так \SQ1234_Иванов Иван Иванович.xls
...
Рейтинг: 0 / 0
RegExp_регулярные выражения VBA
    #39928343
Фотография Shamanus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antonkashin,

ну если символ _ входит всегда, так может быть за него цепляться
отсеивать через
Код: vbnet
1.
If InStr(1, xWord.Value, "_", vbTextCompare) Then Debug.Print Replace(xWord.Value, "_", "")
...
Рейтинг: 0 / 0
RegExp_регулярные выражения VBA
    #39928395
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antonkashin
или в названии папки или в названии файла
может быть так \SQ1234_Иванов Иван Иванович.xls

А потом окажется, что может быть и так:
Код: plaintext
\SQ1234-Иванов Иван Иванович.xls
и так
Код: plaintext
\SQ1234 Иванов Иван Иванович.xls
и много еще разных комбинаций и не только в имени файла, но и папки, вроде того:
Код: plaintext
\SQ1234\VVFFG4 Иванов Иван Иванович.xls
Тогда одного условия в виде 6 латинских букв или цифр подряд явно мало. Ищите как еще можно отобрать именно клиентский номер. Пока не определите однозначные условия никакие изощрения не помогут.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / RegExp_регулярные выражения VBA
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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