2010-05-12 35 views
0

在我的論壇中,用戶可以通過電子郵件回覆。我正在處理他們答覆的郵件。當他們回覆正在追加的原始消息時。我只想得到回覆消息,而不是原始消息。正則表達式從java中使用回覆郵件中刪除原始郵件?

我必須爲gmail & hotmail編寫正則表達式。

書面的Gmail正則表達式如下:

\n.*wrote:(?s).*--End of Post-- 

它去除原始消息除外日期。 我也想刪除日期。

hi 33 

On Tue, May 11, 2010 at 4:18 PM, Mmmmm, Rrrrr 
<[email protected]>wrote: 

    The following update has been posted to this discussion: 
    ---------------------------------------------------------------------- 
    test as user 222 
    ---------------------------------------------------------------------- 
    [$MESSAGE_SIGNATURE_HEADER$] 



    --End of Post-- 

當我使用上述正則表達式被濾波如下::

hi 33 

On Tue, May 11, 2010 at 4:18 PM, Mmmmm, Rrrrr 

在這裏,我想只有實際的消息「喜33

移除原始消息之前「不是那個日期。如何使用上述正則表達式過濾日期?

我還需要正則表達式爲Hotmail也。

我很欣賞任何答覆。 在此先感謝。

回答

1

試試這個(這將匹配應刪除的所有內容):

On\s+\w+,\s+\w+\s+\d+,\s+\d+\s+at\s+\d+:\d+\s+\w+,.*?wrote:.*?--End of Post-- 

還是簡單的版本:

On.*?wrote:.*?--End of Post-- 
+0

也許它在一個而不是另一箇中起作用的原因是因爲在「應用程序」中,您沒有設置點(。)以匹配換行符「\ n」。你必須這樣做才能使它工作。 – PeterM 2010-05-13 01:30:24

+0

如何忽略新行?你能修改那個表達並告訴我嗎? – 2010-05-13 08:59:39

+0

嘗試在正則表達式的開頭添加'(?s)'來設置單線模式。 – 2010-05-13 12:46:16

0

我知道了。 要跳過新線我修改以這種方式....

在\ S + \ W +,\ S + \ W + \ S + \ d +,\ S + \ d + \ S +在\ S + \ d +:\ d + \ S + \ w + \ S + \ w + \ S + \ w +(?S)。 ?寫道:。 \ n(?s)。* - 帖子末尾 -