2013-07-08 13 views
2

我想從荷蘭銀行文件中獲取特定字段:付款的描述用:86: 表示但我後面需要的字段是兩行。使用正則表達式獲取特定字段

例子:

:86:GIRO··1234567····················ABCD 
STREET·99····················CITY 
LB1234NL·························DATE 

我想獲得參考 「LB1234NL」 作爲結果。

我幾乎沒有,但只是不太:

(?<=:86:.{1,65}\r\n)(.*\r\n){2} 

這給了我第二和第三行。 但後來我卡

+4

考慮與語言/工具標記您的問題,你是using..regex實現跨語言/工具不同 – Anirudha

+2

它是一個clieop3文件?我認爲這些文件有很多解析器。你在用什麼語言? – GolezTrol

回答

1

這提取它作爲第一組:

(?<=:86:.*\n.*\n)\w+ 

請注意,您沒有指定語言和操作系統。這在使用Perl的Linux中起作用。

+0

我正在使用它來將銀行對賬單轉換爲SAP(使用SAP工具),並且我試圖將引用轉換爲第三行的字段。爲此,我必須使用正則表達式「公式」,然後該工具將把該值放入我想要的字段中。你的公式(:86:。* \ n。* \ n(\ w +)\。*)幾乎可行,因爲當我在Expresso中測試正則表達式時,我看到兩行:完整的細節,然後我在第一組中需要的參考資料。不幸的是,SAP工具並沒有選擇它,只是選擇了「主」線。有沒有辦法,我可以有一個公式,只是得到refence? – Sidney

+0

對不起,我不知道SAP或其正則表達式。 「主線」是什麼意思? – m0skit0

+0

這是wat expresso給我的(見圖:主線,然後是我需要的領域)。但我不知道足夠多(閱讀:第一次必須使用它)只保留這些信息,因爲我只有1個字段可以輸入我的正則表達式「公式」。 http://tinypic.com/r/2v0xrgp/5 – Sidney

0

使用perl可以提取價值:

perl -0pe 's/:86:(?:[^\r\n]*\r?\n){2}([A-Z0-9]+)([^\r\n]*\r?\n)*/\1/' file 
+0

爲什麼這麼複雜? – m0skit0

+0

@ m0skit0:用perl命令試試你發佈的正則表達式,你會知道:P – anubhava

+0

哦,我明白了,你是對的。但是誰要求一個Perl命令一行? :) – m0skit0