-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」(実際には銀行の名前であり、プライバシーのためにここで削除されています)で始まり、-------------------の行で終わります。

私が理解する必要があるのは、2行の顧客データです(00007xxxxx-これらのアカウント番号は1人あたり変更されます)。

したがって、「ABCD」から「---」の末尾までを選択して、そのテキストブロックを削除する必要があります。

4

2 に答える 2

0

この正規表現を試してください。これはJavaコードです。指定されたパターンを自分の言語で使用できます。

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

上記のデータはどこに含まれていますか。行は私が推測することstrで区切られています。\n

于 2012-10-05T13:29:17.703 に答える
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")

このコードをここでテストします。

于 2012-10-05T13:30:41.753 に答える