我很難與以下;多行正則表達式替換如果超過兩個
有一個問題和答案,我需要導入到一個特定格式的Moodle(在線問題網站)的文件。一切都是黑色的接受正確的答案,這些都是綠色的。開始格式如下:
1. Question example
a. Wrong
b. Wrong
C. Wrong
D. Right
輸出應該成爲
:Question example
:Question example
{
~ Wrong
~ Wrong
~ Wrong
= Right
}
我在Word中打開文件替換所有紅色的段落標記(我不能做一組替換)與*。之後,我將.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
}
理想我具有SED或Perl的正則表達式,計數=量之間唱{並用〜%50%替換它們。和所有的〜%〜100%。我可以爲這3個正確答案編寫代碼,其中每個正確的答案變成〜33%。
這是可行的嗎?我有超過1000個問題,它肯定會幫助實現這一點。使用sed多行替換是有點棘手的兩行,所以我想四行或更多行將需要perl?我沒有Perl的經驗。
有人可以幫我解決這個問題嗎?請原諒我英語不好,我是非母語的人。
查找sed保持空間操作;這似乎很棘手,但我想這是可能的。 – 2012-04-14 21:52:50
你在做Windows和Linux之間的不同新行?那麼Word爲你「糾正」的所有字符,比如引號呢? – stark 2012-04-14 22:52:50
如果你展示了一些真實的例子,它會有很大的幫助。從您的示例中很難判斷哪些文本是真實的,哪些是佔位符。源文件中是否出現錯誤和錯誤?如果是這樣,如何判斷哪個答案是對的,哪個是錯的?如果不是,輸出文件中的重點是什麼? – Borodin 2012-04-14 23:05:39