Мы используем некоторые структуры имен файлов, как пользователи должны сохранять файлы.
У меня есть огромный список всех наших файлов в Excel, и мне нужно проверить имена файлов.
В кратком пояснении имя файла начинается с номера детали. Номер детали содержит «группы», разделенные дефисом.
Основная проблема заключается в том, что пользователи иногда используют пробелы (случайно) с дефисами для разделения групп.
Я должен пометить имена файлов в списке так: - правильно - похоже, но неправильно - не совпадает
Аналогично означает, если порядок групп правильный, но разделение групп осуществляется не только дефисом (-), но и в сочетании с пробелами: ' - '
или '- '
или ' -'
или '- '
и т. д..
Я написал макрос регулярного выражения в VBA. Это работает хорошо, но я придерживаюсь «похожего» шаблона.
Вот упрощенная версия одной структуры в регулярном выражении:
^(\d{4}-\d{2}(?:-\d{3})?-[A-Z]\d{3}-[A-Z])(?: - )(.*)
В этом случае интересной частью является первая группа захвата, номер детали. Как вы видите, в первой группе захвата есть группа без захвата, которая не является обязательной. Две группы захвата (номер детали и описание) разделены символом «-».
Примеры правильного имени файла:
1111-22-333-A444-B - DESCR.EXT
1111-22-A444-B - DESCR.EXT
Примеры для похожего, но неправильного имени файла:
1111-22 -333-A444-B - DESCR.EXT
1111-22- A444-B - DESCR.EXT
1111 -22-333-A444-B - DESCR.EXT
1111 -22 - A444- B - DESCR.EXT
1111 - 22 - A444 - B - DESCR.EXT
Примеры для несовпадающего имени файла:
1111-22-333-A444 - DESCR.EXT
1111-22-B - DESCR.EXT
1111-22-333-A444-BDESCR.EXT
1111-22 - DESCR.EXT
1111-22-33-444-B - DESCR.EXT
1111-22-444-B - DESCR.EXT
Я могу пометить правильные и несоответствующие значения с помощью шаблона выше, но я не знаю, как изменить, чтобы проверить, что «похоже»? Я пытался найти решение здесь и в Google, но не нашел :/
Спасибо