我需要解析值超出文本看起來像這樣的:使用RegEx解析文本?
Description. Question?
A. First Answer
B. Second Answer
C. Third Answer
Answer: A, B
現在我需要找出描述的問題,問題的答案,這答案是正確的。 RegEx有可能嗎?我知道這應該是可能的,但我不是RegEx Expert。
我需要解析值超出文本看起來像這樣的:使用RegEx解析文本?
Description. Question?
A. First Answer
B. Second Answer
C. Third Answer
Answer: A, B
現在我需要找出描述的問題,問題的答案,這答案是正確的。 RegEx有可能嗎?我知道這應該是可能的,但我不是RegEx Expert。
認真的Regex是偉大的,但一旦解析邏輯變得先進,正則表達式也需要解決這個問題。我建議把邏輯分成小塊(我認爲你有某種腳本語言可用來做一些預處理?)
即使你得到了與一個殺手正則表達式匹配的整個事情 - 稍後改變它(由你或者其他一些抱歉的人)會是一種痛苦。
我會配合這樣的答案(你需要剝離逗號):
^Answer: (\w,?)+
然後我會做的邏輯來重新分析和與第一正則表達式找到答案文本,像這樣的東西(重建了比賽,在這種情況下,A是一個答案):
^A\.\s(.*)
這也許不是什麼與閃爍你的朋友,但它會更容易維護,而且赫克容易得多瞭解。
幾乎任何你可能想要用正則表達式解析文本都可能想做的事情,但你必須投入一些時間來學習它。你的特定任務有多棘手取決於你的文本體是如何一致的。所以簡而言之,是的,但不要問我的Reg Ex!祝你好運。
」投入一些時間來學習它雖然「,唯一的問題是,我沒有時間;) –
如果你可以對你的例子更具體,並顯示一個實際的問題和描述,它會更容易說清楚,但如果我正在閱讀這個權利,你可以找到所有的文本到最後一個句號「 「。在問號「?」之前,然後找到問號後面的文字,直到問號「?」,最後使用滿員的字母「。」。之後他們的權利,所以像這樣的僞:
lastFullStopBeforeQ = text.substring(0至第一個問題 標記).lastIndexOf
說明= text.substring(0至lastFullStopBeforeQ)( 「」)
問題= text.substring(lastFullStopBeforeQ + 1到第一個問題 標記)
答案[0] = text.substring(第一問號+ 1到下一個 「\ n」)...
個CorrectAnswers [0] = text.substring(旁邊指數 「答:」 到明年 「」)...
我知道這是可能使用C#,如果你用別的話我可以給你一個明確的答案。 「
」^ A \。\ s(。*)「效果很好,謝謝!但我有一個問題。我有一些答案與換行符。我如何匹配整個答案而不匹配下一個答案? –
哦,「^ A \。\ s([^ B] *)」這個工作! –
啊,不,它不... –