У меня есть документ Word, содержащий вопросы и ответы в следующем формате:
1. What is the name of our planet?
a) Earth
b) Mars
c) Venus
d) Jupiter
ANSWER:
a
TYPE: MC DIFFICULTY: Easy
KEYWORDS: planet solar system
Что мне нужно сделать, так это «разделить» документ на две части, первая из которых содержит только вопросы, а вторая содержит только ответы. Результат должен быть следующим.
Документ 1 - Вопросы
1. What is the name of our planet?
a) Earth
b) Mars
c) Venus
d) Jupiter
Документ 2 - Ответы
1. ANSWER:
a
TYPE: MC DIFFICULTY: Easy
KEYWORDS: planet solar system
Документы имеют довольно регулярную структуру, т.е.
- номер списка
- Текст вопроса
- строка, содержащая «ANSWERL:»
- Текст ответа
- Два CRLF
Я пытался использовать регулярные выражения для сопоставления текста и извлечения его из документа, но у меня возникли трудности с использованием собственного синтаксиса RegEx в Word, и я не смог выяснить, как создать RegEx, охватывающий несколько строк и несколько блоков документа.
Я также попробовал PowerGREP; RegEx работает, но он может только читать простой текст из документа и теряет все списки (например, номера вопросов и ответов) и все объекты (некоторые вопросы и ответы имеют графики и таблицы, которые я должен хранить).
Подводя итог, я должен следовать этой логике.
- Выберите все (текст и объекты) из вопроса
число до слова «ОТВЕТ» (исключено). Сделайте это для каждого вопроса
(т.е. обрабатывать один вопрос / блок за раз).
- Выберите все (текст и объекты) от слова "ОТВЕТ" до следующего вопроса (исключено).
Документ в формате .DOC, но я также могу сохранить его в .DOCX. Примечание. Я попытался проанализировать XML-файл .DOCX, но он содержит тысячи лишних тегов, что делает все невероятно сложным.