2012-10-05 45 views
-1

好的 - 這遠遠超出了我對正則表達式的有限知識。我們收到一家銀行實體的報告,文件格式固定。不幸的是,他們的系統導出頁面標題與數據文件,必須在我們處理結束前刪除。頁面標題以相同的文本開始和結束,但內容更改(日期和頁碼)。一個典型的一個是這樣的:使用通配符刪除頁腳的正則表達式

00007xxxxx  LAST1,FIRST1   111111  20120930 
ABCD     EXPORT RPT   10/04/12 at 10/04/12 16:20 Seq 1501 Page 16 

MRK014 Report Date: 10/04/12 

Acct#   Name     SH. Balance  QTR (YYYYMMDD) 
---------------------------------------------------------------------------------------------------- 
00007xxxxx  LAST2,FIRST2   222222  20120930 

因此每頭與「ABCD」(銀行的實際名稱,這裏剛除去隱私)開始並以行結束--------- ----------。

我需要弄清楚的是兩行中的客戶數據(00007xxxxx--每個人更改的帳號)。

所以我需要從「ABCD」中選擇「---」的結尾來刪除那段文字。

+2

您使用哪種語言? –

回答

0

試試這個正則表達式。這是一個Java代碼..你可以在你的語言使用給定的模式..

str = str.replaceAll("ABCD((.*?)[\n\r])+(\\-*)", ""); 

哪裏str包含您的上述數據..行由\n我想分開。 。

0

爲了確保您正在刪除正確的報告部分,我將使用更復雜的正則表達式模式。

使用正則表達式

(?<=[\n\r])ABCD\s+EXPORT\s+RPT\s[^-]+[\n\r]\-+[\n\r]+ 

和替換每個匹配空字符串。

但是,如果你的環境不支持正則表達式回顧後,那麼你必須使用模式:

([\n\r])ABCD\s+EXPORT\s+RPT\s[^-]+[\n\r]\-+[\n\r]+ 

,並與第一組替換每場比賽。

例如在的JavaScript這將是:

str.replace(/([\n\r])ABCD\s+EXPORT\s+RPT\s[^-]+[\n\r]\-+[\n\r]+/g, "$1") 

測試此代碼here