У меня трудное время со следующим:Многострочное регулярное выражение заменяет, если более двух
Существует текстовый файл с вопросами и ответами, которые мне нужно импортировать в moodle (онлайн-сайт вопроса) в определенном формате. Все черное принимает за правильные ответы, они зеленые. Формат запуска заключается в следующем:
1. Question example
a. Wrong
b. Wrong
C. Wrong
D. Right
выход должен стать
:Question example
:Question example
{
~ Wrong
~ Wrong
~ Wrong
= Right
}
открыть файл в слове заменить все знаки красного абзаца (я не могу сделать замену с группами) с *. После этого я экспортирую файл .docx в текст. Откройте на моем компьютере Linux и нанесите на него следующее регулярное выражение.
sed -i -e 's/^\r/\n/g' tmp #OS X white line replacement
sed -i -e 's/\r//g' tmp #remove white lines
sed -i -e 's:^[a-z]\.:~:' tmp #Replace Leading question letters with tilde
sed -i -e 's/\(^[0-9]*\.\ \)\(.*\)/}\n::\2\n::\2\n{/' tmp #regenerate tittle
sed -i -n '${p;q};N;/\n\*/{s/"\?\n//p;b};P;D' tmp #next line starts with * append to front of current
sed -i -e 's:^~\(.*\)\(\*.*\)$:=\1:' tmp #move * from back to = to front
sed -i -e 's:^\*:=:' tmp #replace any remaining * with =
sed '/^$/d' tmp #delete any remaining white lines
Это не большой, но работает хорошо, вопросы ручной работы и много ошибок, поэтому я до сих пор ходить корыта это вручную. Трудная часть - это когда у меня есть несколько правильных ответов. Выход должен выглядеть следующим образом:
:Question example
:Question example
{
~%-100% Wrong
~%-100% Wrong
~%50% Right
~%50% Right
}
В идеале у меня есть или PERL патч в регулярное выражение, которое подсчитывает количество = поёт между {и заменяет их с ~% 50%. И все ~ поет с% -100%. Я могу иметь этот код также для 3 правильных ответов, где каждый правильный ответ становится ~% 33%.
Является ли это выполнимым? У меня более 1000 вопросов, и это поможет автоматизировать это. Многострочная замена с sed является довольно сложной с двумя линиями, поэтому я думаю, что четыре или более строк потребует perl? У меня нет опыта в Perl.
Может ли кто-нибудь помочь мне с этим? Пожалуйста, извините мой плохой английский. Я не носитель языка.
Посмотрите на седло операции космического пространства; это кажется сложным, но я думаю, что это возможно. –
Что вы делаете о новых символах между Windows и Linux? Также, что касается всех персонажей, которые Word «исправляет» для вас, например, цитаты? – stark
Это очень помогло бы, если бы вы показали некоторые реальные примеры. Трудно сказать из вашего примера, какой текст является реальным и который является заполнителем. Появляются ли «неправильные» и «правильные» в исходном файле? Если да, то как сказать, какие ответы правильные и что неправильно? Если нет, какова их точка в выходном файле? – Borodin