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

разве что както так [A-Z0-9]{6}[.]{1} или так [A-Z0-9]{6}[.xls]{4}
...
Рейтинг: 0 / 0
19.02.2020, 10:51
    #39928316
Shamanus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RegExp_регулярные выражения VBA
а, не учел, что нужен номер клиента, а не имя экселя
...
Рейтинг: 0 / 0
19.02.2020, 10:53
    #39928317
Shamanus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RegExp_регулярные выражения VBA
а лидирующее подчеркивание всегда ?
[_]{1}[A-Z0-9]{6}
...
Рейтинг: 0 / 0
19.02.2020, 11:03
    #39928322
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RegExp_регулярные выражения VBA
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
19.02.2020, 11:09
    #39928327
antonkashin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RegExp_регулярные выражения VBA
The_Prist,
Количество папок может быть разное и клиенткий номер может содержаться или в названии папки или в названии файла
...
Рейтинг: 0 / 0
19.02.2020, 11:11
    #39928328
antonkashin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RegExp_регулярные выражения VBA
Shamanus, не всегда, может быть так \SQ1234_Иванов Иван Иванович.xls
...
Рейтинг: 0 / 0
19.02.2020, 11:33
    #39928343
Shamanus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RegExp_регулярные выражения VBA
antonkashin,

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

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


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