は、私は次のように苦労していた場合に複数行を交換する正規表現。つ以上の
私は特定の形式でのMoodle(オンライン質問サイト)にインポートする必要がある質問と答えとワードファイルがあります。すべてが正解のために黒で受け入れられます、これらは緑です。出力は
:Question example
:Question example
{
~ Wrong
~ Wrong
~ Wrong
= Right
}
私は言葉でファイルを開くには、すべての赤の段落記号を置き換えるになるべき
1. Question example
a. Wrong
b. Wrong
C. Wrong
D. 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
}
理想的には私は=の量は間{と〜%〜50%に置き換え歌っカウントのsedやperlの正規表現を持っています。そして%〜100%のすべての〜が歌います。 3つの正解についてもこのコードを持つことができ、すべての正解が〜%33%になります。
これは実行可能ですか?私は1000以上の質問があり、それは確かにこれを自動化するのに役立ちます。 sedによる複数行の置換は2行でややこしいので、4行以上の行にはperlが必要でしょうか?私はPerlでの経験がありません。
誰かがこの1で私を助けてもらえますか?私の悪い英語を許してください。私は母国語ではない話し手です。
sed hold space操作を参照してください。それは難しいようですが、私はそれらを使用して可能だと思います。 –
WindowsとLinuxの異なる改行について何をしていますか?また、引用符のように、あなたが「訂正」する文字のすべてについてはどうでしょうか? – stark
実際の例をいくつか示しておけば、それは多くの助けになります。実際のテキストとプレースホルダーがあなたの例から分かりにくいです。ソースファイルに 'Wrong'と' Right'と表示されますか?もしそうなら、どの答えが正しいのか、そしてどちらが間違っているのかを教える方法は?そうでない場合、出力ファイルにはどのような点がありますか? – Borodin