В Excel VBA я пытаюсь использовать метод регулярных выражений для сопоставления строки. Как только совпадение произойдет, я хочу, чтобы соответствующая строка включала всю строку, если только после ключевой строки не найдено ключевое слово. Проиллюстрировано иначе: шаблон регулярного выражения выглядит следующим образом:
pattern = (CHECKOUT[a-zA-Z_(/ ):]+\w+:\w+\s((AM|PM)|(am|pm))\s\-\s\w+:\w+\s((AM|PM)|(am|pm)))
вводимые строки:
1. CHECKOUT Senior Guest Services Manager FRONTENDMGR: 07:00 AM - 08:30 AM SGSM_BOOKKEEPING: 08:30 AM - 01:00 PM FRONTENDMGR: 01:00 PM - 04:00 PM
2. CHECKOUT Guest Services Manager BOOKKEEPER: 09:00 AM - 01:00 PM DRY GOODS Receiving Clerk RECEIVE: 04:30 AM - 09:00 AM
3. DRY GOODS Receiving Clerk RECEIVE: 04:30 AM - 09:00 AM CHECKOUT Guest Services Manager BOOKKEEPER: 09:00 AM - 01:00 PM
с первой строкой, я хочу вернуть всю строку, но возвращается только следующее:
ПРОВЕРЬТЕ Старший менеджер по обслуживанию гостей FRONTENDMGR: 07:00 - 08:30
со второй строкой, я хочу, чтобы возвращалась только первая часть строки из "CHECKOUT" в "01:00 PM", и это хорошо работает.
с третьей строкой, я хочу только вернуть часть между "CHECKOUT" и "01:00 PM".
Таким образом, единственное, что не встречается, - это первая строка, где я хочу, чтобы вся строка возвращалась, но совпадает только первая часть.
Так что мне нужно настроить шаблон так, чтобы он включал все, кроме слова «СУХИЕ ТОВАРЫ» в строке, и если это так, возвращайте только часть между словами «ПРОВЕРКА» И «AM» ИЛИ «PM».