だから、私はこれに従う正規表現を構築しました:
4!a2!a2!c[3!c]
これはに翻訳されます
- 4 つの英字の後に続く
- 2 つの英字の後に続く
- 2 文字の後に続く
- 任意の3文字
これは、SWIFT BIC コード HSBCGB2LXXX の標準形式です。
これを文字列から引き出すための私の正規表現は次のとおりです。
(?<=:32[^:]:)(([a-zA-Z]{4}[a-zA-Z]{2})[0-9][a-zA-Z]{1}[X]{3})
現在、これは特定のタグ (32) をターゲットにしており、機能していますが、それが最もクリーンであるかどうかはわかりません。また、H の前に文字がある場合は失敗します。
照合される文字列は次のとおりです。
:32B:HsBfGB4LXXXHELLO
以下は を返しますHSBCGB4LXXX
が、これは:
:32B:2HsBfGB4LXXXHELLO
何も返しません。
編集
明確にするために。:2xnumber:optional 文字 (例: :58A:) で始まる複数の行を含む文字列があります。照合を開始する行を指定し、行のどこからでも BIC を返したいと考えています。
編集 役立ついくつかのサンプルデータ:
:20:ABCDERF Z
:23B:CRED
:32A:140310AUD2120,
:33B:AUD2120,
:50K:/111222333
Mr Bank of Dad
Dads house
England
:52D:/DBEL02010987654321
address 1
address 2
:53B:/HSBCGB2LXXX
:57A://AU124040
AREFERENCE
:59:/44556677
A line which HSBCGB2LXXX contains a BIC
:70:Another line of data
:71A:Even more
では、タグ 53 または 59 を変数として渡し、BIC HSBCGB2LXXX のみを返す必要があります。