Ich habe eine harte Zeit mit dem folgenden;Multiline Regex ersetzen, wenn mehr als zwei
Es gibt eine Word-Datei mit Fragen und Antworten, die ich in Moodle (Online-Frageseite) in einem bestimmten Format importieren muss. Alles ist schwarz für die richtigen Antworten, diese sind grün. Das Startformat ist folgende:
1. Question example
a. Wrong
b. Wrong
C. Wrong
D. Right
Der Ausgang
:Question example
:Question example
{
~ Wrong
~ Wrong
~ Wrong
= Right
}
ich die Datei öffnen werden soll alle roten Absatzmarken in Wort ersetzen (ich kann ein mit Gruppen nicht ersetzen) mit *. Danach exportiere ich die .docx Datei in Text. Öffnen Sie auf meinem Linux-Computer und werfen Sie den folgenden Regex darauf.
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
Dies ist nicht groß, aber gut funktioniert, Fragen sind handgefertigt und haben viele Fehler, so muss ich noch diese von Hand zu Fuß Trog. Der schwierige Teil ist, wenn ich mehrere richtige Antworten habe. Die Ausgabe sollte wie folgt aussehen;
:Question example
:Question example
{
~%-100% Wrong
~%-100% Wrong
~%50% Right
~%50% Right
}
Idealerweise habe ich einen sed oder perl regex, dass die Menge von = zählt singt zwischen {und ersetzt sie durch ~% 50%. Und das alles mit% -100%. Ich kann diesen Code auch für 3 richtige Antworten haben, wobei jede richtige Antwort ~% 33% wird.
Ist das machbar? Ich habe über 1000 Fragen und es würde sicher helfen, dies zu automatisieren. Multiline-Ersatz mit sed ist mit zwei Zeilen ziemlich schwierig, also denke ich, vier oder mehr Zeilen brauchen Perl? Ich habe keine Erfahrung in Perl.
Könnte mir jemand mit diesem helfen? Bitte entschuldigen Sie mein schlechtes Englisch Ich bin ein Nicht-Muttersprachler.
Suchen Sie sed halten Raum Operationen; es scheint schwierig, aber ich denke, es ist möglich, diese zu verwenden. –
Was machst du mit den verschiedenen Zeilenumbrüchen zwischen Windows und Linux? Und was ist mit all den Zeichen, die Word für Sie "korrigiert", wie Zitate? – stark
Es würde Ihnen sehr helfen, wenn Sie Beispiele aus der Praxis zeigen würden. Es ist schwer aus Ihrem Beispiel zu erkennen, welcher Text real ist und welcher Platzhalter ist. Erscheint 'Falsch' und' Rechts' in der Quelldatei? Wenn ja, wie kann man sagen, welche Antworten richtig und welche falsch sind? Wenn nicht, worauf kommt es in der Ausgabedatei an? – Borodin